簡體   English   中英

PHP中的圖像上傳腳本

[英]image upload script in php

在我的應用程序中,用戶可以創建他/她的相冊。

我的問題是如何上傳特定於該用戶ID的圖像? 這意味着應該有一些標准來指示這些圖像屬於該用戶。

我當時想我可以使用用戶ID的圖像名稱存儲圖像,但是在那種情況下,很難將注釋與這些圖像一起存儲。

有什么更好的辦法嗎?

經常使用的解決方案是每個圖像具有兩個數據:

  • 當然,磁盤上的文件
  • 並在數據庫中記錄


數據庫中的記錄通常至少包含:

  • 圖像的路徑
  • 上載用戶的ID。

這樣,對於每個圖像,您就有了其他數據-可以使用這些數據為應用程序添加一些行為。

當然,這意味着當用戶上傳圖像時,您將需要做更多的工作-但這也不錯,並且可以證明是有用的。


同樣,在需要時,您也可以向存儲這些數據的數據庫表中添加一些其他字段,例如:

  • 有關被允許查看每個圖像的用戶的信息
  • 諸如圖像大小,內容類型,上次修改時間之類的東西。。。不必每次都需要從文件中重新計算它們

您不使用數據庫嗎?

如果不:

設置一個數據庫來存儲用戶,然后在iamges和用戶之間創建邏輯連接。

例如

用戶:

|---------------------------------------
|  UserId       Username      Password |
|---------------------------------------
|     1         Robert        3j9745t3 |
|     2          Paul         03945u30 |
|---------------------------------------

圖片:

|--------------------------------------------------
|  ImageID       UserId      Desc       ImageHash |
|-------------------------------------------------|
|     1            1        Some Desc  87ytr8d23yr|
|     2            1        Some Desc  5uty4095u40|
|-------------------------------------------------|

然后將圖像存儲在圖像目錄中,例如87ytr8d23yr.png ,然后可以像這樣進行php查詢

$userid = 1;
$sql = "SELECT * FROM Images WHERE UserId = " . (int) $userid . " ORDER BY ImageID LIMIT 10";

if(false !== ($resource = mysql_query($sql)))
{
    while($imageRow = mysql_fetch_object($resource))
    {
       if(file_exists('imageDir/' . $imageRow->ImageHash . '.png'))
       {
            //Do whatever.
       }else
       {
           //Delete the row and inform the user that the picture has been deleted for some reason.
       }
    }
}

另外,您只需要做一個Comment表並添加ImageId,當用戶對圖像進行注釋時,只需將圖像添加到注釋行中即可進行跟蹤。

你有數據庫嗎? 用戶登錄了嗎? 創建一個表來跟蹤圖像,包括一個用戶ID列,然后將整個圖像存儲在數據庫中或僅存儲圖像的路徑名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM