2009-04-09 134 views
0

我允許我的網站管理面板的用戶上傳照片,它是一個簡單的過程,我在此檢查圖像的有效性並將其保存到文件夾中,然後我還必須記錄夫婦爲形象數據庫記錄,以便能夠再次找到它,我的節電功能如下... 是上傳和一個名字我在另一個函數構造保存文件夾中的圖片功能:保存圖像的最佳實踐

My_HTMLInputFile.PostedFile.SaveAs(HttpContext.Current.Server.MapPath("~/photos\" & pta.FileName)) 

以及爲相同圖片創建數據庫記錄的功能:

Public Function InsertPhoto() As Integer 
     Dim pta As New GKPTableAdapters.tblPhotosTableAdapter 
     Return pta.InsertPhoto(PhotoCaption, PhotoDescription, ("http://www.myURL.com/photos/" & FileName), IsDefault, IsPicture) 
    End Function 

現在我知道我正在做的是充滿最佳做法違規,所以請指出我應該做什麼,請記住用戶可能會稍後刪除照片,所以我想確保我可以刪除圖片的數據庫和文件,以及整個問題的路徑令我困惑:P

在此先感謝。

回答

1

我剛纔注意到的一點是,你正在對圖像的完整路徑進行硬編碼。

我只是存儲圖像的名稱,然後在前面加上相對路徑,當我在應用

如果您允許用戶通過您的應用程序來刪除這些文件,您應該刪除的記錄顯示它數據庫,然後通過使用刪除文件本身File.Delete method

0

您可能還想看看您的文件名稱生成。例如,如果您使用圖像數據的md5散列作爲文件名,則可以防止人們上傳重複圖像,而且您也不必爲圖像生成「唯一」名稱。

如果您的照片目錄中存在公衆不應該看到且您的命名策略可預測的情況,那麼將照片目錄直接暴露給互聯網可能是個壞主意。人們會開始猜測圖片的URL,並偶然發現他們不允許看到的東西。

+0

其實所有圖片都可以公開使用,所以不用擔心,我的命名函數只需要數據時間和秒數,然後顛倒文件的名稱,然後將擴展名附加到它,所以沒有重複。 – Maen 2009-04-09 07:37:37