Javascript 通过js API消息发布BASE64图像和消息不是UTF-8编码的
我们正在将BASE64图像与状态消息一起发布到用户相册中。 一切正常,但如果状态消息包含未正确编码的非基本ASCII字符 我们尝试:Javascript 通过js API消息发布BASE64图像和消息不是UTF-8编码的,javascript,facebook-graph-api,character-encoding,base64,Javascript,Facebook Graph Api,Character Encoding,Base64,我们正在将BASE64图像与状态消息一起发布到用户相册中。 一切正常,但如果状态消息包含未正确编码的非基本ASCII字符 我们尝试: var encodedPng = imageData.substring(imageData.indexOf(',')+1,imageData.length); imageData = Base64Binary.decode(encodedPng); // this is the multipart/form-data boundary we'l
var encodedPng = imageData.substring(imageData.indexOf(',')+1,imageData.length);
imageData = Base64Binary.decode(encodedPng);
// this is the multipart/form-data boundary we'll use
var boundary = '----ThisIsTheBoundary1234567890';
// let's encode our image file, which is contained in the var
var formData = '--' + boundary + '\r\n'
formData += 'Content-Disposition: form-data; name="source"; filename="' + filename + '"\r\n';
formData += 'Content-Type: ' + mimeType + '\r\n\r\n';
for ( var i = 0; i < imageData.length; ++i )
formData += String.fromCharCode( imageData[ i ] & 0xff );
formData += '\r\n';
formData += '--' + boundary + '\r\n';
formData += 'Content-Disposition: form-data; name="message"\r\n';
formData += 'Content-Type: text/html; charset=utf-8\r\n\r\n';
formData += message + "\r\n"
formData += '--' + boundary + '--\r\n';
var xhr = new XMLHttpRequest();
xhr.open( 'POST', 'https://graph.facebook.com/'+picMood.fb_album_id+'/photos?access_token=' + token, true );
xhr.onload = xhr.onerror = function() {
if(typeof callback == "function")
callback();
};
xhr.setRequestHeader("content-type", "multipart/form-data; charset=utf-8; boundary=" + boundary);
xhr.sendAsBinary( formData );
var encodedPng=imageData.substring(imageData.indexOf(',')+1,imageData.length);
imageData=Base64Binary.decode(encodedPng);
//这是我们将使用的多部分/表单数据边界
变量边界='——这是边界1234567890';
//让我们对包含在var中的图像文件进行编码
var formData='-'+boundary+'\r\n'
formData+='内容配置:表单数据;name=“source”;filename=“”+filename+”\r\n';
formData+='内容类型:'+mimeType+'\r\n\r\n';
对于(var i=0;i
如果我们通过FB对状态消息进行抽样发布,那么api(…)字符的编码确实是正确的
谢谢你的帮助
我们正在将BASE64图像与状态消息一起发布到用户相册
不,您正在发布已解码的二进制数据。不要那样做。摆脱这一行:
imageData = Base64Binary.decode(encodedPng);
而是将encodedPng
上传为base64数据。假设API设计用于处理base64数据,那么它应该可以。如果不是,并且您确实需要上传二进制数据,那么您不应该尝试使用表单编码的文本