使用 files.upload API 将 Excel 上传到 Slack - 文件上传,但已损坏

艾伦

我正在使用 Slack 的files.upload API 上传从 AJAX 响应中检索到的 Excel 文档。我正在使用 jQuery 的 AJAX 进行上传,并且文件正在正确上传,但已损坏。当我打开从Slack下载的文件时,它包含许多“?”和其他表示不良编码的字符。下载文件,然后使用 Slack 的测试工具上传,可以正常工作并且不会导致损坏。

最相关的部分是ajaxConfig; 这是传递给 jQueryajax()方法的对象

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);
    }
});

我已经尝试了不同类型的BlobmimeType没有成功,但我不认为这是问题所在,因为我发送的 POST 请求看起来与 Slack 的测试工具生成的请求相同(它上传了文件而没有损坏)。我怀疑问题一定在于我如何编码我得到的响应runReport(请记住,我可以手动下载该文件就好了)。


更新我使用FileSaver.js下载响应并且文件以相同的方式损坏,因此它与 POST 到 Slack 无关。它必须是编码。

艾伦

它最终成为由 jquery 引起的编码问题。使用直接xhr时,上传工作正常。

var req = new XMLHttpRequest();
req.open(method, url);
req.responseType = 'arraybuffer';
req.onload = function(){
    success(req.response);
};
req.send();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

您能否以其他用户的身份使用files.upload将文件上传到Slack API?

来自分类Dev

无法通过 web-api 将文件上传到 slack

来自分类Dev

使用Retrofit2将文件上传到Slack

来自分类Dev

将Excel文件上传到Microsoft Graph API Beta时文件损坏

来自分类Dev

使用Python脚本将图像上传到Slack频道

来自分类Dev

使用/ files_put javascript将文件上传到dropBox

来自分类Dev

使用PHP将文件上传到FTP而不损坏文件

来自分类Dev

使用Guzzle 6将文件上传到API端点

来自分类Dev

如何使用OneDrive REST API将文件上传到OneDrive?

来自分类Dev

使用R将CSV文件上传到REST API

来自分类Dev

使用Blobstore API将文件上传到Google云存储

来自分类Dev

使用Postman Raw将文件上传到Box API

来自分类Dev

使用REST API将文件上传到Firebase存储

来自分类Dev

使用Microsoft Graph API将文件上传到SharePoint Online

来自分类Dev

使用R将CSV文件上传到REST API

来自分类Dev

使用 Drive API 和 PHP 将文件上传到 Teamdrives

来自分类Dev

使用NodeJS的Slack API(files.upload)

来自分类Dev

将Excel文件上传到DataGridView

来自分类Dev

无法使用PHP将数据从Excel上传到mysql

来自分类Dev

如何将日期从Excel上传到mysql?(使用php)

来自分类Dev

无法使用PHP将数据从Excel上传到mysql

来自分类Dev

Java将文件上传到api端点

来自分类Dev

将文件上传到Message Bird API

来自分类Dev

如何将文件上传到API

来自分类Dev

使用REST API将图像上传到Twitter

来自分类Dev

使用Python API将图片上传到Facebook

来自分类Dev

使用Drive API将图片上传到Google Drive

来自分类Dev

iOS使用REST API将图片上传到OneDrive

来自分类Dev

使用Graph API将照片上传到Facebook

Related 相关文章

热门标签

归档