HTML 5+AJAXオリジナルブロックアップロードファイルのキーパラメータ設定

2187 ワード

processData:false
これはjqueryです.ajaxのパラメータです.デフォルト値はtrueで、非文字列オブジェクトが自動的にk 1=v 1&k 2=v 2の形式になることを示します.例えば、配列パラメータ{d:[1,2]}は、サービス側に着くとd[]=1&d[]=2の形式になります.
ArrayBufferオブジェクトをアップロードするにはfalseに設定する必要があり、サービス側はRequestから直接アップロードする.InputStreamは、元のバイトストリームを取得します.
w 3 school解釈:
 
processData

  :Boolean

   : true。     ,  data         ,       (           ),              ,          "application/x-www-form-urlencoded"。      DOM               ,     false

 
 
 
プライマリ・コード:(次のコードは、FileReaderの非同期メソッドのReadAsArrayBufferの完了イベントonloadで呼び出されます.thisは現在のreaderを指します)
$.ajax('/Home/File',
                    {
                        data: this.result,
                        type: 'POST',
                        processData: false,
                        success: function (res) {
                            console.log(res);
                        },
                        error: function (err) {
                            console.log(err);
                        }
                    });

サービス側はファイル類の内容を受け入れる:
var stream = Request.InputStream;

HTML 5のみFileReaderオブジェクトがあるため、HTML 5のみがJSオリジナルブロックアップロードファイルをサポートします.
前回はWebSocketベースのオリジナルブロックを使用してファイルをアップロードする方式でもHTML 5のみがサポートされていました.
http 1のため.1デフォルトkeep-liveプロパティでは、リクエストごとに接続を再確立することはありません.したがって、サービス側ではwebsocketを使用できないシナリオですが、クライアントがhtml 5をサポートしている場合はajaxオリジナルブロックでアップロードできます.