マイクロソフト系技術情報 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を用いる。
  • HTTP 1.1(のメソッド)に加え
  • 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: :その他、開発の色々


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-06 (金) 10:16:49 (138d)