「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>アップロード・ダウンロード]] *目次 [#o07f733a] #contents *概要 [#l965ca7e] .NETによるファイルのアップロード処理 *詳細 [#l19110c4] -ブラウザからアップロードする場合は、<INPUT type="file">を使用する。 -これによりwwwブラウザからHTTPの~ マルチパートメッセージボディを使用して~ ファイルをアップロードすることが可能である。 -サーバ側ではHttpPostedFileクラスのメソッドを使用して、~ 受信したファイル データをファイルに保存する~ (マルチパートメッセージボディは、~ 複数ファイルのアップロードに対応している)。 -ファイルのアップロード時、アップロード中のデータは、~ 全てASP.NETプロセスのメモリに蓄積される。~ **クライアント毎のアップロード処理 [#fa6a5359] --このため、巨大なファイルがアップロードされる場合は、~ ASP.NETプロセスの使用するメモリ量が膨張し、~ メモリ不足になる可能性があるので注意する(多重度なども影響する)。 ***ブラウザからアップロード [#e8452537] --このため、web.configにアップロード可能な~ ファイルの最大サイズを設定しておくと良い 。~ >wwwブラウザはファイルのアップロード時に、~ ファイルサイズをHTTPヘッダのContent-Length属性に付加するので、~ 設定値を超えるファイルのアップロード要求をファイル受信前に拒否できる。 <httpRuntime maxRequestLength="4096" executionTimeout="90"/> **ブラウザからアップロード [#e8452537] -@IT > Insider.NET > .NET TIPS > [ASP.NET]~ ブラウザからファイルをアップロードできるようにするには?~ http://www.atmarkit.co.jp/fdotnet/dotnettips/321uploadform/uploadform.html --[ASP.NET]バイナリ・データをアップロードしてデータベースに登録するには?~ http://www.atmarkit.co.jp/fdotnet/dotnettips/253aspdbbinary/aspdbbinary.html --[ASP.NET]アップロードされたファイルをPostedFileプロパティにより取得するには?~ http://www.atmarkit.co.jp/fdotnet/dotnettips/322postedfile/postedfile.html **.NETからアップロード [#t3eb88ca] ***.NETからアップロード [#t3eb88ca] アップロードの.NET実装は以下の様になる。 protected string UOC_btnMButton1_Click(FxEventArgs fxEventArgs) { HttpPostedFile posted = Request.Files["userfile"]; if (posted.FileName != "") { posted.SaveAs( "c:\\UploadedFiles\\" + System.IO.Path.GetFileName(posted.FileName)); } return ""; } **メモリ不足の問題 [#qc0f127e] アップロードするファイルのサイズによってはメモリ不足が発生する。~ #アップロードが完了するまでAPサーバがデータをメモリに保持するため。 ファイルのアップロード時、アップロード中のデータは、~ 全てASP.NETプロセスのメモリに蓄積される。 メモリ不足の問題を解決するには、~ ***ファイルの最大サイズ設定 [#u728966d] -巨大なファイルがアップロードされる場合は、~ ASP.NETプロセスの使用するメモリ量が膨張し、~ メモリ不足になる可能性があるので注意する(多重度なども影響する)。 -web.configにアップロード可能な~ ファイルの最大サイズを設定しておくと良い 。~ >wwwブラウザはファイルのアップロード時に、~ ファイルサイズをHTTPヘッダのContent-Length属性に付加するので、~ 設定値を超えるファイルのアップロード要求をファイル受信前に拒否できる。 <httpRuntime maxRequestLength="4096" executionTimeout="90"/> ***大規模データのアップロード [#i4732199] 「WCF のストリーミング転送モード」~ を使用してアップロード処理を実装する必要がある 。 -MSDNライブラリ > .NET開発 > WCF機能の詳細~ データ転送とシリアル化 > 大規模データとストリーミング~ http://msdn.microsoft.com/ja-jp/library/ms733742.aspx *参考 [#s6c99cfa] **[[ファイルのダウンロード]] [#neee87b1] **マイクロソフト系技術情報 Wiki [#g1578591] ***[[アップロード・ダウンロード>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%83%BB%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89]] [#c06cb43b] -[[アップロードのいろいろ>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AE%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D]] -[[ダウンロードのいろいろ>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AE%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D]] IP:202.246.252.105 TIME:"2019-09-25 (水) 09:50:10" REFERER:"https://opentouryo.osscons.jp/index.php?cmd=edit&page=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89" USER_AGENT:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"