0

ユーザーがプロフィール写真をアップロードできる ASP.NET Web サイトを構築しています。これらの画像を A​​pp_Data フォルダーに保存し、ファイル パスを Users テーブルに保存します。

では、ユーザーのプロフィール写真をどのように更新すればよいのでしょうか。つまり、以前のファイルを上書きし、同時に画像を取得する要求が到着した場合はどうなるでしょうか。同時実行管理を行う必要がありますか? 私の最善の解決策は、新しいイメージのファイル名を生成し (データベース内のユーザー レコードもこの新しいパスで更新されます)、後で削除するために古いパスを別の場所に保存することです。これは良い考えですか?

4

2 に答える 2

0

新しいファイル名を生成する必要はありません。非常に賢い解決策があります。

Users テーブルを変更し、Uploadversion フィールドを追加します。アップロードされたファイルで同じファイルを上書きし、Users テーブルのアップロード バージョン フィールドを増やすだけです。

クライアントがファイルを要求するときは、このバージョンのパスを送信してください。クライアントは、このバージョンを偽のクエリ文字列として img 要素の src パスに追加する場合があります。

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

例:

<img src="/images/john_doe/photo?16" />
于 2014-01-11T20:03:53.447 に答える
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 に答える