2017-09-06 6 views
1

次の関数を使用して、base64文字列をblobに変換しています。これはうまくいきます。ただし、ファイルをサードパーティ製のAPIにアップロードすると失敗します。その理由は、APIが適切なfileName(拡張子付き)を要求し、作成するBLOBにはそれがないと思われるからです。私はBLOBする文字列を変換するとき、私は、ファイル名を取得できますか解決済み:base64文字列をblobに変換した後のファイル名が無効です

------WebKitFormBoundarytqD15GSBoU08Xz1l 
Content-Disposition: form-data; name="image"; filename="blob" 
Content-Type: image/jpeg 

:それはここで

は私がトレース要求である代わりに「blob.jpg」のファイル名「ブロブ」を代入しますか?ここでは関数は次のとおりです。

function b64toBlob(b64Data, contentType, sliceSize) { 
    contentType = contentType || ''; 
    sliceSize = sliceSize || 512; 

    var byteCharacters = atob(b64Data); 
    var byteArrays = []; 

    for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) { 
     var slice = byteCharacters.slice(offset, offset + sliceSize); 

     var byteNumbers = new Array(slice.length); 
     for (var i = 0; i < slice.length; i++) { 
      byteNumbers[i] = slice.charCodeAt(i); 
     } 

     var byteArray = new Uint8Array(byteNumbers); 

     byteArrays.push(byteArray); 
    } 

    var blob = new Blob(byteArrays, { type: contentType }); 
    return blob; 
} 

編集:まだこのための答えを探している人のために:

formData.append('image', BlobICreatedFromTheAboveFunction); 

形成するための画像データを付加している間、私は次のようにやっていました

画像名を割り当てるための正しい方法である:

formData.append('image', BlobICreatedFromTheAboveFunction, "Whatever.jpg"); 
+0

Blobオブジェクトは、すべてのファイル名を持っている、と何の関係もありません。 'Content-Disposition'ヘッダの' filename'属性と関係します。おそらく、要求を作成して送信するコードを表示する必要があります。 –

+0

@ SergeyPetuninありがとう!あなたは本当に正しいです。私は私の質問を更新し、解決策を提供しました。 – user1640256

+1

@ user1640256あなたが回答を投稿してそれを受け入れた方がずっと良いでしょう – jannis

答えて

0

形成するための画像データを付加し、私は次のようにやっていたが:

formData.append('image', BlobICreatedFromTheAboveFunction); 

イメージ名を割り当てるための正しい方法は次のとおりです。

formData.append('image', BlobICreatedFromTheAboveFunction, "Whatever.jpg"); 
関連する問題