「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ファイルのアップロードについての情報を纏めます。
通常のアップロード方法 †
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)
- BufferモードとStreamingモードがあり、後者でこの問題を解決できる。
- APサーバのStreaming対応が無い場合も、MTOMでStreamingがサポートされる。
- JavaScriptからMTOMのWebサービスは利用できないので
Webサービス・クライアントの開発が必要になる。
- MTOMはWCFなどを使用したWebサービスで利用可能
(対応可能かどうか?は使用するAPサーバ・フレームワークに依存)。
Tags: :その他、開発の色々