通过js API消息发布BASE64图像和消息不是UTF-8编码的
Posting BASE64 image and message via js API message is not UTF-8 encoded
我们将BASE64图像与状态消息一起发布到用户相册。一切正常,但如果状态消息包含非基本ASCII字符,这些字符没有正确编码。
我们尝试:
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 );
如果我们通过FB.api(…)示例发布状态消息,字符确实被正确编码。
我们正在将BASE64图像与状态消息一起发布到用户相册
不,你发布的是解码的二进制数据。不要那样做。删除这一行:
imageData = Base64Binary.decode(encodedPng);
并将encodedPng
上传为base64数据。假设API被设计为处理base64数据,应该没问题。如果不是,并且您确实需要上传二进制数据,则不应该尝试使用表单编码的文本。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 如果localstorage为空,则显示欢迎消息
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 离开页面时弹出消息
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 消息显示之外的淘汰验证
- 选项卡侦听器未被来自后台脚本的消息激活
- jQuery在输入下验证post错误消息
- Scipt未在选定选项卡中执行以发送和接收消息
- 检查xmlhttprequest问题的消息
- AngularJs对ng消息的自定义替换
- ng消息仅在触摸时显示错误,并在错误的初始显示上转换
- 当用户按下回车键时,自动在text区域/text中插入消息
- 如果消息框答案为YES,则用Javascript填写表单
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 在AngularJs中隐藏默认错误消息
- 使用JavaScript安全地发布消息
- 通过js API消息发布BASE64图像和消息不是UTF-8编码的