Open棟梁Project - マイクロソフト系技術情報 Wiki
目次  †
概要  †
ファイルのアップロードについての情報を纏めます。
通常のアップロード方法  †
Form-based File Upload  †
RFC1867で規定されている模様。
Content-Type  †
multipart/form-dataを使用する。
- WWWブラウザのFormからファイルアップロードする一般的方法
 
- <INPUT type="file">を使用してアップロードできる。
 
HTTP1.0 / 1.1メソッド  †
- POSTメソッドを使用する。
 
- PUTは使用できない模様(後述)。
 
その他  †
HTTP1.0 / 1.1メソッド  †
PUTメソッドなども使用できるが、
multipart/form-data とは組み合わせられない模様。
(application/x-www-form-urlencodedでは動作する)
WebDAV追加メソッド  †
- ボディ部では、クライアント・サーバ双方ともXMLを用いる。
 
- GET
 
- HEAD
 
- POST
 
- PUT
 
- DELETE
 
- OPTIONS
 
- PROPFIND
プロパティの取得 
- PROPPATCH
プロパティの変更 
- MKCOL
指定したURIの場所に新たな資源を作成する。 
- COPY
指定したURIが示す資源およびその属性値を別のURIにコピーする。 
- MOVE
指定したURIが示す資源およびその属性値を別のURIに移動する。 
- LOCK
指定したURIが示す資源のファイルロックを設定する。
共有ロックと排他ロックの二種類が利用できる。 
- UNLOCK
指定したURIが示す資源のロックを解除する。 
大容量ファイルのアップロード  †
大量データのアップロードには、以下の方式がある。
Streaming、MTOMなどに対応している
APサーバは少ないと考えられるため、
分割アップロードが一般的設計と考える。
分割アップロード  †
主に、APサーバのStreaming対応の有無によって、
分割アップロードが必要になることがある。
必要性  †
Streaming対応が無いAPサーバでは、
multipart/form-dataを全てメモリに溜め込んでしまうため、
メモリ・リークに陥る。この対応として分割アップロードがある。
選択肢  †
- クライアントを作りこむ。
HTTPクライアントライブラリ(API)を使用して
ファイル分割アップロード処理を行うHTTPクライアントを開発する。 
- JavaScriptライブラリを使用する。
jQuery-File-Uploadを使用して、分割アップロードが可能。 
以下も参考になるが、こちらは、ノーマルなjQueryのサンプルのもよう。
注意点  †
こちらと同様、2GB以上のファイルを扱えないケースがある。
その他の方法  †
MTOM  †
MTOM(Message Transmission Optimization Mechanism)
- APサーバのStreaming対応が無い場合も、MTOMでStreamingがサポートされる。
 
- JavaScriptからMTOMのWebサービスは利用できないので
Webサービス・クライアントの開発が必要になる。 
- MTOMはWCFなどを使用したWebサービスで利用可能
(対応可能かどうか?は使用するAPサーバ・フレームワークに依存)。