我允许我网站管理员面板的用户上传照片,这是一个简单的过程,我检查图像的有效性,然后将其保存到文件夹,然后我还要记录几个数据库记录该图像以后能够检索,我的保存功能如下...... 上传并将图片保存在文件夹中的函数,其名称为i构造在另一个函数中:
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
提前致谢。
答案 0 :(得分:1)
我注意到的一件事就是你正在将全部路径硬编码到图像上。
我只是存储图像名称,然后在应用程序中显示它时预先设置相对路径
如果您允许用户通过您的应用程序删除文件,则应删除数据库中的记录,然后使用File.Delete method
删除文件本身答案 1 :(得分:0)
您可能还想查看文件名生成。例如,如果您使用图像数据的md5哈希值作为文件名,则可以阻止人们上传重复的图像,您也不必考虑为图像生成“唯一”名称的方法。
如果有公众不应该看到的图像并且您的命名策略是可预测的,那么将您的照片目录直接暴露给互联网可能是一个坏主意。人们会开始猜测图片网址并偶然发现他们不允许看到的内容。