[[Open棟梁>https://github.com/OpenTouryoProject]] wiki
「[[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のマルチパートメッセージボディを使用してファイルをアップロードすることが可能である。
-これによりwwwブラウザからHTTPの~
マルチパートメッセージボディを使用して~
ファイルをアップロードすることが可能である。

-サーバ側ではHttpPostedFileクラスのメソッドを使用して、受信したファイル データをファイルに保存する(マルチパートメッセージボディは、複数ファイルのアップロードに対応している)。
-サーバ側ではHttpPostedFileクラスのメソッドを使用して、~
受信したファイル データをファイルに保存する~
(マルチパートメッセージボディは、~
複数ファイルのアップロードに対応している)。

-ファイルのアップロード時、アップロード中のデータは、全てASP.NETプロセスのメモリに蓄積される。~
このため、巨大なファイルがアップロードされる場合は、ASP.NETプロセスの使用するメモリ量が膨張し、メモリ不足になる可能性があるので注意する(多重度なども影響する)。
**クライアント毎のアップロード処理 [#fa6a5359]

-このため、web.configにアップロード可能なファイルの最大サイズを設定しておくと良い 。~
wwwブラウザはファイルのアップロード時に、ファイルサイズをHTTPヘッダのContent-Length属性に付加するので、設定値を超えるファイルのアップロード要求をファイル受信前に拒否できる。
 <httpRuntime maxRequestLength="4096" executionTimeout="90"/>
***ブラウザからアップロード [#e8452537]

**ブラウザからアップロード [#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プロセスのメモリに蓄積される。

メモリ不足の問題を解決するには、WCF のストリーミング転送モードを使用してアップロード処理を実装する必要がある 。
***ファイルの最大サイズ設定 [#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]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS