我正在建立一个ASP.NET网站,用户可以上传他们的个人资料图片。我将这些图像存储在App_Data文件夹和Users表中的文件路径下。
所以,问题是如何更新用户的个人资料图片?我的意思是,如果我覆盖前一个文件并且同时请求到达以获取图片,会发生什么。我应该进行一些并发管理吗? 我最好的解决方案是为新映像生成文件名(数据库中的用户记录也将使用此新路径更新)并将旧路径存储在其他位置,以便以后删除它。 这是一个好主意吗?
答案 0 :(得分:0)
在我的案例中,我通常会这样做。
使用路径〜/ uploads / images在项目中创建一个文件夹。这里的图片是我关注的文件夹,上传文件和上传文件是root文件。
将图像路径保存到db时,使用简单的
var dbpath = 的String.Format(。 “〜/上传/图像/ {0}”,Guid.NewGuid()的ToString()更换( “ - ”,的String.Empty));
来自文件上传控件Fu.SaveAs(Server.MapPath(dbPath));
如果要在数据库的页面上显示图像,可以使用
<asp:Image runat="server" id="immm"></asp:Image> , from code behind imm.ImageUrl = dt.Rows[0]["ImagePath"].ToString"
2.如果是内部网格/转发器,只需使用<asp:Image runat="server" id="immm" ImageUrl='<%#Eval("ImagePath")%'></asp:Image>
答案 1 :(得分:0)
无需生成新文件名。这是一个非常聪明的解决方案。
更改您的用户表并添加Uploadversion字段。并使用上传的文件覆盖相同的文件,只需在Users表中增加上传版本字段。
当您的客户端请求该文件时,请使用此版本发送路径。客户端可能会将此版本作为伪查询字符串添加到img元素的src路径中。
<img src="/[image_route]?[version]" />
例如:
<img src="/images/john_doe/photo?16" />