- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-[[戻る>アップロード・ダウンロード]]
* 目次 [#bd8e54b2]
#contents
*概要 [#wfafecc4]
ファイルのアップロードについての情報を纏めます。
*通常のアップロード方法 [#a015b334]
**Form-based File Upload [#z5b973ac]
RFC1867で規定されている模様。
-フォームよるファイルアップロードの仕様~
http://www.javadrive.jp/servlet/fileupload_tutorial/index2.html
--Form-based File Upload in HTML~
https://www.ietf.org/rfc/rfc1867.txt
***Content-Type [#e367a311]
multipart/form-dataを使用する。
-WWWブラウザのFormからファイルアップロードする一般的方法
-<INPUT type="file">を使用してアップロードできる。
--INPUT type=file-HTMLタグリファレンス~
http://www.htmq.com/html/input_file.shtml
***HTTP1.0 / 1.1メソッド [#qf3ba1b0]
-POSTメソッドを使用する。
-PUTは使用できない模様(後述)。
**その他 [#e777e3f4]
**その他の方法 [#e777e3f4]
***HTTP1.0 / 1.1メソッド [#vfb43775]
PUTメソッドなども使用できるが、~
multipart/form-data とは組み合わせられない模様。~
(application/x-www-form-urlencodedでは動作する)
-HTTPメソッドのPOSTとPUTの使い分け - アインシュタインの電話番号~
http://blog.ruedap.com/2011/03/24/http-method-post-put
-php - REST PUT send data with multipart-form-data - Stack Overflow~
http://stackoverflow.com/questions/18530253/rest-put-send-data-with-multipart-form-data
***WebDAV追加メソッド [#fe706d33]
-WebDAV - Wikipedia~
http://ja.wikipedia.org/wiki/WebDAV
--ボディ部では、クライアント・サーバ双方ともXMLを用いる。
--HTTP 1.1(のメソッド)に加え
---GET
---HEAD
---POST
---PUT
---DELETE
---OPTIONS
--次のメソッドが存在する。
---PROPFIND~
プロパティの取得
---PROPPATCH~
プロパティの変更
---MKCOL~
指定したURIの場所に新たな資源を作成する。
---COPY~
指定したURIが示す資源およびその属性値を別のURIにコピーする。
---MOVE~
指定したURIが示す資源およびその属性値を別のURIに移動する。
---LOCK~
指定したURIが示す資源のファイルロックを設定する。~
共有ロックと排他ロックの二種類が利用できる。
---UNLOCK~
指定したURIが示す資源のロックを解除する。
*大容量ファイルのアップロード [#lcf58b88]
大量データのアップロードには、以下の方式がある。
-分割アップロード
-その他の方法
--MTOM
-[[分割アップロード>#o2cfe3b7]]
-[[その他の方法>#ad7b3a27]]
--[[MTOM>#w32a688f]]
Streaming、MTOMなどに対応している~
APサーバは少ないと考えられるため、~
分割アップロードが一般的設計と考える。
**分割アップロード [#o2cfe3b7]
主に、APサーバのStreaming対応の有無によって、~
分割アップロードが必要になることがある。
***必要性 [#h718965e]
Streaming対応が無いAPサーバでは、~
multipart/form-dataを全てメモリに溜め込んでしまうため、~
メモリ・リークに陥る。この対応として分割アップロードがある。
***選択肢 [#v42bb928]
-クライアントを作りこむ。~
HTTPクライアントライブラリ(API)を使用して~
ファイル分割アップロード処理を行うHTTPクライアントを開発する。
-JavaScriptライブラリを使用する。~
jQuery-File-Uploadを使用して、分割アップロードが可能。
--jQuery File Uploadを利用した大容量ファイルのアップロードをChunked uploadで実現する - KayaMemo~
--jQuery File Uploadを利用した大容量ファイルの~
アップロードをChunked uploadで実現する - KayaMemo~
http://kayakuguri.github.io/blog/2015/10/01/jquery-chunked-upload/
>以下も参考になるが、こちらは、ノーマルなjQueryのサンプルのもよう。
--asp.net MVCとjQueryでファイルアップロードするメモ | リグレックス社員ブログ~
http://blog.regrex.jp/2016/06/03/post-498/
***注意点 [#md91fb8b]
こちらと同様、2GB以上のファイルを扱えないケースがある。
-[[2GB制限>ダウンロードのいろいろ#h23ea62b]]
**その他の方法 [#ad7b3a27]
***MTOM [#w32a688f]
MTOM(Message Transmission Optimization Mechanism)
-BufferモードとStreamingモードがあり、後者でこの問題を解決できる。
-APサーバのStreaming対応が無い場合も、MTOMでStreamingがサポートされる。
-JavaScriptからMTOMのWebサービスは利用できないので~
Webサービス・クライアントの開発が必要になる。
-MTOMはWCFなどを使用したWebサービスで利用可能~
(対応可能かどうか?は使用するAPサーバ・フレームワークに依存)。
-参考
--大規模データとストリーミング | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/framework/wcf/feature-details/large-data-and-streaming
--WCF: Streaming Large Data Files~
https://www.c-sharpcorner.com/uploadfile/afenster/wcf-streaming-large-data-files/
*参考 [#m19b1eb7]
**[[ダウンロードのいろいろ]] [#i495f573]
**Open 棟梁 Wiki [#ob78ea14]
***[[ファイルのアップロード>https://opentouryo.osscons.jp/index.php?%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]] [#h10fc396]
----
Tags: [[:その他、開発の色々]]