2010-12-06 8 views
0

私はASP.NET 3.5でプログラミングしています。アップロードされたファイルに対してプロセスを実行する.NET

ユーザーがアップロードする必要があるファイルを処理する必要があります。ファイルは特定の形式です。基本的には、ファイル内の情報を取得し、解析してSQLデータベースに挿入する必要があります。私はそれをやっても問題ありませんが、私はウェブサイトからこれをどうやってやるのだろうと思っていました。

ユーザーがアクセス権を持つ共有を作成し、共有にファイルをアップロードさせ、アップロード時に完全なUNCパスを使用してレコードをDBに保存すると思います。サイトで、そのUNCパスでファイルを処理し、ファイルを「処理済み」フォルダに移動します。

誰もこのようなことをしましたか?これに類似したことを行う「標準的な」方法はありますか?

ありがとうございました。

答えて

2

これが役立つかどうかわかりませんが、FileUploadクラスをネームスペースSystem.Web.UI.WebControlsに使用できます。

あなたは、MSDNをチェックすることができます。 here

0

1)アップロードINPUTとのASPXページを作成します。

2)ASP.NETは、ファイルをアップロードした取得)ユーザーがファイル をアップロードしようと、ファイルにバイナリストリームを書いても

4)仕上げだけでなく、データベースにファイルを登録しますその要求がその前にファイルを処理するバックグラウンドスレッドを生成する

5)登録されていても何らかの理由で処理されなかったファイルとは別のクリーンアップ操作が必要です。

0

最速ソリューション - あなたのファイル処理は、スクリプトのタイムアウトの前に完了しますと、あなたはそれが起こる一方で、ユーザの待ち時間を持って満足している場合:

は、アップロードフォルダにあなたのウェブサイト上の仮想ディレクトリの地図 - 私たちに私たちのDMZ内のファイルサーバー上の公開共有にマップされたすべてのWebサーバー上で/〜upload /を持っています。

そして、その後、

より複雑なソリューションは、ファイル処理を処理するためにバックグラウンドスレッド(または別のWindowsサービスまたはスケジュールされたタスク)を産卵伴うだろうコードビハインド

protected void ProcessFilesButton_Click(object sender, EventArgs e) { 
    string uploadRootPath = Server.MapPath("~/upload/"); 

    foreach(var uploadedFile in Request.Files) { 

     // might want to use a GUID filename here instead 
     // to avoid risk of filename conflicts. 
     string bareFileName = Path.GetFileName(uploadedFile.FileName); 
     string fullFilePath = Path.Combine(uploadRootPath, bareFileName); 
     uploadedFile.SaveAs(fullFilePath); 
     myMagicFileProcessor.ProcessFile(fullFilePath); 
    } 
    MyLabel.Text = String.Format("{0} files processed", Request.Files.Count); 
} 
あなたのページにこのようなコードのものを使用し、メタリフレッシュされた「Please Wait ...」ページを返します。これは10秒ごとにページを再描画し、コードビハインドではキュー内のファイルのステータスをクエリしてレポートします処理ごとに完了します。

関連する問題