0

I'm bulding an ASP.NET website where the users can upload their profile picture. I store these images under the App_Data folder and the file paths in the Users table.

So, the question is how should I update the user's profile picture? I mean, what happens if I overwrite the previous file and at the same time a request arrives to get the picture. Should I have some concurrency management? My best solution is generating a file name for the new image(the user record in the database would be updated with this new path as well) and store the old path somewhere else, in order to delete it later. Is this a good idea?

4

2 回答 2

0

我通常在我的情况下做什么。

  1. 在我的项目中使用路径 ~/uploads/images 创建一个文件夹。这里的图片是我关心的文件夹,它在上传和上传在根目录下。

  2. 在将图像路径保存到数据库时,我使用简单

    var dbpath= string.Format("~/Uploads/Images/{0}",Guid.NewGuid().ToString().Replace("-",string.Empty));

  3. 并从文件上传控制Fu.SaveAs(Server.MapPath(dbPath));

如果要在数据库中的页面上显示图像,可以使用

  1. <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>

于 2013-09-03T17:21:00.853 回答
0

无需生成新文件名。有一个非常聪明的解决方案。

更改您的用户表并添加一个 Uploadversion 字段。并用上传的文件覆盖相同的文件,并在您的用户表中增加一个上传版本字段。

当您的客户端请求文件时,请发送此版本的路径。客户端可以将此版本作为假查询字符串添加到您的 img 元素的 src 路径。

<img src="/[image_route]?[version]" />

例如:

<img src="/images/john_doe/photo?16" />
于 2014-01-11T20:03:53.447 回答