私はSlackのfiles.upload APIを使用して、AJAXレスポンスから取得したExcelドキュメントをアップロードしています。私はアップロードのためにjQueryのAJAXを使用しています、そして、ファイルが壊れていることを除いて正しくアップロードされています。 Slackからダウンロードしたファイルを開くと、多くの "?"やその他の文字が含まれています。ファイルをダウンロードし、Slackのtester toolを使用してアップロードすると、正しく動作し、破損することはありません。ファイルアップロードを使用してExcelをスラックにアップロードする - ファイルのアップロードが壊れています。
最も関連する部分はajaxConfig
です。これはjQueryのajax()
メソッドに渡されるオブジェクトです。
Blob
と
mimeType
のためのさまざまな種類を試してみた
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に関連していません。これはエンコーディングでなければなりません。
私はJavascriptのエキスパートではありませんが、データのエンコーディングの問題のようです。この回答は役に立ちます:http://stackoverflow.com/questions/19959072/sending-binary-data-in-javascript-over-http –