「[[マイクロソフト系技術情報 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] ***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 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~ 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) -APサーバのStreaming対応が無い場合も、MTOMでStreamingがサポートされる。 -JavaScriptからMTOMのWebサービスは利用できないので~ Webサービス・クライアントの開発が必要になる。 -MTOMはWCFなどを使用したWebサービスで利用可能~ (対応可能かどうか?は使用するAPサーバ・フレームワークに依存)。 ---- Tags: [[:その他、開発の色々]]