我的问题是:我不知道如何使用Zendesk从Meteor方法中的Base64编码字符串发送二进制文件。
基本上,我试图在服务器端的Meteor中复制这个curl命令:
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
上传工作,但图像已损坏,我无法打开它。
我仍然是非常新的流星,也相当绿色的编码和诸如此类,任何帮助感谢!
发布于 2016-02-05 18:59:14
我想出了解决问题的办法。
我从本机Meteor切换到Node请求包。它似乎更好地支持发送二进制数据。也许我没有正确地使用它,但是不管我做了什么,Meteor调用都会以奇怪的格式对我的文件进行编码。
现在我用这个助手函数解码base64 dataString:
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;
}
然后我设定了我的选择
options = {
headers: { 'content-type' : 'application/binary', 'Authorization': 'Basic ' + encoded },
url: zendeskURI + 'uploads.json?filename=' + args.name,
body: decodeBase64Image(file).data,
method: 'POST'
};
我利用请求发布:
request.post(options, function(error, response, body){
var parsedJSON = JSON.parse(body);
callback && callback(null, parsedJSON);
});
现在一切正常,我可以上传二进制数据到Zendesk!
https://stackoverflow.com/questions/35167940
复制相似问题