2017-03-26 6 views
0

私はSlackのfiles.upload APIを使用して、AJAXレスポンスから取得したExcelドキュメントをアップロードしています。私はアップロードのためにjQueryのAJAXを使用しています、そして、ファイルが壊れていることを除いて正しくアップロードされています。 Slackからダウンロードしたファイルを開くと、多くの "?"やその他の文字が含まれています。ファイルをダウンロードし、Slackのtester toolを使用してアップロードすると、正しく動作し、破損することはありません。ファイルアップロードを使用してExcelをスラックにアップロードする - ファイルのアップロードが壊れています。

最も関連する部分はajaxConfigです。これはjQueryのajax()メソッドに渡されるオブジェクトです。

私が送信してるPOSTリクエストは、Slackのによって生成されたものと同じに見えるので、私は、これは問題ではないと思いますけれども、私は、成功せず BlobmimeTypeのためのさまざまな種類を試してみた
self.getClient().runReport({ 
    query: queryString, 
    success: function(response){ 
     var formEnc = new FormData(); 
     formEnc.append('file', new Blob([response], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}), 'filename.xls'); 
     self.getClient().slackFile({ 
      filename: 'MyReport.xls', 
      channel: '%23my-channel', 
      ajaxConfig: { 
       method: 'post', 
       data: formEnc, 
       processData: false, 
       contentType: false, 
       mimeType: 'multipart/form-data', 
       success: function(response){ 
        resolve(response); 
       }, 
       error: function(response){ 
        reject(response); 
       } 
      } 
     }); 
    }, 
    error: function(msg){ 
     reject(msg); 
    } 
}); 

テスターツール(破損せずにファイルをアップロードしたもの)。私は、問題が、私がrunReportから得た応答をどのようにエンコードしているのか疑問に思っています(手動でファイルを手動でダウンロードできることを覚えておいてください)。


更新 私は応答をダウンロードするFileSaver.jsを使用して、ファイルを同じように破損しているので、スラックするPOSTに関連していません。これはエンコーディングでなければなりません。

+0

私はJavascriptのエキスパートではありませんが、データのエンコーディングの問題のようです。この回答は役に立ちます:http://stackoverflow.com/questions/19959072/sending-binary-data-in-javascript-over-http –

答えて

0

jqueryに起因するエンコードの問題に終わった。ストレートxhrを使用するとアップロードがうまく動作します。

関連する問題