2011-12-17 11 views
0

私はasp.net 4.0でWebフォームを持っています。情報の投稿時にアップロードされたファイルのハウスキーピング - asp.net c#web form

現在、ユーザーが書籍の画像をアップロードし、[送信]ボタンをクリックしないと、ファイルは引き続きローカルドライブに保存されます。どのように私はこれらのファイル/ハウスキーピングを管理するのですか?

現在のところ、ちょうどこのASPXコードを使用しています:背後にあるコードのための

<asp:FileUpload ID="flupload1" runat="server" /> 
<asp:RegularExpressionValidator ID="revImage" runat="server" ControlToValidate="flupload1" 
    ValidationGroup="sell" Display="Dynamic" ForeColor="Red" Text=" Invalid image type" 
    ValidationExpression="^.*\.((j|J)(p|P)(e|E)?(g|G)|(g|G)(i|I)(f|F)|(p|P)(n|N)(g|G))$" /> 

protected void uploadBtn1_Click(object sender, EventArgs e) 
{ 
    if (flupload1.HasFile) 
    { 
     flupload1.SaveAs(Server.MapPath("productImages") + "//" + flupload1.FileName); 
     try 
     { 
      img1.ImageUrl = "ProductImages//" + flupload1.FileName; 
     } 
     catch (Exception) 
     { 

     } 
    } 
} 
+0

すでに試したことのある質問には、実用的な部分を投稿する必要があります。あなたはあなたが望む正確な答えを得ることができます。 – Lion

答えて

1

我々は同様の問題を処理する方法は、一時ファイル(アップロード、要求されたファイルのすべてを持っていることですウェブサイトの一時的でよく知られているディレクトリに保存されています。

その後、Webアプリケーションが起動すると(夜間にリセットされるようにスケジュールされています)、ディレクトリ内で24時間以上経過したすべてのファイルが削除されます。

+0

私は参照してください...ちょうど一時フォルダを作成し、ポストで確認されたら、実際のファイルを一時フォルダから実際のフォルダに移動しますか? –

+0

@t_onny:そうです。 –

0

あなたのためのいくつかのアイデア:

  1. イメージが最初にアップロードされると、RAMにキャッシュし、その後、ユーザーが送信ボタンをクリックするまでそれをディスクに書き込みません。一定時間経過後に期限切れになるようにキャッシュエントリを設定します。
  2. ASP.NETアプリケーションにバックグラウンドスレッドがあり、頻繁に起動し、必要なクリーンアップを行います。最初に一時フォルダにファイルを保存してから、ユーザーが送信を開始したときにファイルを最終的な保存先に移動することで、このプロセスを簡略化できます。
  3. クリーンアップを実行するために定期的に実行されるWindowsでスケジュールされたタスクを作成します。
関連する問題