2011-08-02 8 views
0
if(up.xhr.sendAsBinary != null) { //firefox 

    up.xhr.open('POST', '/html5_upload.php?up=true', true); 

    var boundary = 'xxxxxxxxx'; 

    var body = '--' + boundary + "\r\n"; 
    body += "Content-Disposition: form-data; name='upload'; filename='" + up.processing.name + "'\r\n"; 
    body += "Content-Type: application/octet-stream\r\n\r\n"; 
    body += binary + "\r\n"; 
    body += '--' + boundary + '--'; 

    up.xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' + boundary); 
    up.xhr.sendAsBinary(body);   

} else { //for browsers that don't support sendAsBinary yet 

    up.xhr.open('POST', '/html5_upload.php?up=true&base64=true', true); 

    up.xhr.setRequestHeader('UP-FILENAME', up.processing.name); 
    up.xhr.setRequestHeader('UP-SIZE', up.processing.size); 
    up.xhr.setRequestHeader('UP-TYPE', up.processing.type); 

    up.xhr.send(window.btoa(binary)); 
} 

こんにちは、私はこのコードをウェブサイトからコピーしました。ファイルをphpに送る2つの方法の違いは何ですか?もう1つの代わりに1つを使用することでどんなメリットがありますか?XHRリクエストを使用してファイルを送信する

+0

http://dev.w3.org/html5/spec/Overview.html#dom-windowbase64-btoa – TJR

答えて

1

btoa関数については、HTML5 specに記載されています。このメソッドは、すべてのブラウザで実装されているわけではありません。

あなたの例としてはsource articleです。

第1の例(sendAsBinary)は、RFC 2388で定義されているフォームの投稿データを作成します。

第2の例(btoa)は、カスタムペイロード(ファイル内容のbase64でエンコードされた値)を使用します。

+0

ああ、php base64がそれをデコードした理由を説明します。ありがとう。神様は学ぶほどです。私は私の頭が広がると感じることができます。 – Ageis

関連する問題