保存图像的最佳实践

问题描述:

我允许我的网站管理面板的用户上传照片,它是一个简单的过程,我在此检查图像的有效性并将其保存到文件夹中,然后我还必须记录夫妇为形象数据库记录,以便能够再次找到它,我的节电功能如下... 是上传和一个名字我在另一个函数构造保存文件夹中的图片功能:保存图像的最佳实践

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

在此先感谢。

我刚才注意到的一点是,你正在对图像的完整路径进行硬编码。

我只是存储图像的名称,然后在前面加上相对路径,当我在应用

如果您允许用户通过您的应用程序来删除这些文件,您应该删除的记录显示它数据库,然后通过使用删除文件本身File.Delete method

您可能还想看看您的文件名称生成。例如,如果您使用图像数据的md5散列作为文件名,则可以防止人们上传重复图像,而且您也不必为图像生成“唯一”名称。

如果您的照片目录中存在公众不应该看到且您的命名策略可预测的情况,那么将照片目录直接暴露给互联网可能是个坏主意。人们会开始猜测图片的URL,并偶然发现他们不允许看到的东西。

+0

其实所有图片都可以公开使用,所以不用担心,我的命名函数只需要数据时间和秒数,然后颠倒文件的名称,然后将扩展名附加到它,所以没有重复。 – Maen 2009-04-09 07:37:37