首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将二进制文件从Meteor上载到外部API?

如何将二进制文件从Meteor上载到外部API?
EN

Stack Overflow用户
提问于 2016-02-03 03:25:43
回答 1查看 574关注 0票数 0

我的问题是:我不知道如何使用Zendesk从Meteor方法中的Base64编码字符串发送二进制文件。

基本上,我试图在服务器端的Meteor中复制这个curl命令:

代码语言:javascript
运行
复制
curl -u username:password -H "Content-Type: application/binary" --data-binary @file.dat -X POST "https://helpdesk.zendesk.com/api/v2/uploads.json?filename=myfile.dat&token={optional_token}"

我从前端得到一个Base64编码的文件.这是我的流星方法:

http://pastie.org/private/irextwfhdbgpknjpjjldw

上传工作,但图像已损坏,我无法打开它。

我仍然是非常新的流星,也相当绿色的编码和诸如此类,任何帮助感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-05 18:59:14

我想出了解决问题的办法。

我从本机Meteor切换到Node请求包。它似乎更好地支持发送二进制数据。也许我没有正确地使用它,但是不管我做了什么,Meteor调用都会以奇怪的格式对我的文件进行编码。

现在我用这个助手函数解码base64 dataString:

代码语言:javascript
运行
复制
    function decodeBase64Image(dataString) {
        var matches = dataString.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/),
            response = {};

        if (matches.length !== 3) {
            return new Error('Invalid input string');
        }

        response.type = matches[1];
        response.data = new Buffer(matches[2], 'base64');

        return response;
    }

然后我设定了我的选择

代码语言:javascript
运行
复制
options = {
    headers: { 'content-type' : 'application/binary', 'Authorization': 'Basic ' + encoded },
    url: zendeskURI + 'uploads.json?filename=' + args.name,
    body: decodeBase64Image(file).data,
    method: 'POST'
};

我利用请求发布:

代码语言:javascript
运行
复制
        request.post(options, function(error, response, body){
            var parsedJSON = JSON.parse(body);

            callback && callback(null, parsedJSON);
        });

现在一切正常,我可以上传二进制数据到Zendesk!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35167940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档