使用Facebook Graph API和JavaScript上传照片:将canvas图像转换为multipart / form
从这个关于这个主题的问题以及我们在网络上其他地方的研究(如Facebook文档链接),似乎可以直接从canvas.toDataURL()上传图像到Facebook,而无需在服务器上托管图像。
我们面临的问题是如何将baseData编码的数据从toDataURL()转换为Facebook所期望的多部分/表单数据。 这是可能的JavaScript和jQuery.post()在客户端? 如果没有,我们可以求助于将图像保存在服务器上,但如果可能的话,宁愿绕过这一步骤,并从客户端做所有事情。
这是一个PhoneGap应用程序。
可以在服务器上上传画布作为图片。 我在2年前做了一个测试,你可以查看代码:http://standupweb.net/canvas/swSaveCanvas.php
这是使用mootools,但它真的不需要那里,保存功能中的所有东西都是原生的JS代码。
将它与facebook集成应该不是什么大问题
基本上,您需要从URI方案中删除'data:image / png; base64'(例如,使用canvas.toDataURL(“image / png”)),并将其解码为原始形式的图像源。
这是我的代码。 我需要使用dojo.toJson,因为在facebook上发生了一个奇怪的错误。
jQuery.post('index.php',{
data : dojo.toJson({
image_data: img,
signed_request: signedRequest
})
},function(d){
});
这是PHP
$data = json_decode($_POST['data']);
$message = $data->message;
$uploadImage = $data->image_data;
$uploadImage = str_replace('data:image/png;base64,', '', $uploadImage);
$uploadImage = base64_decode($uploadImage);
$name = uniqid('image_') . '.png';
file_put_contents('public/images/users/' . $name, $uploadImage);
$image = array(
'message' => $message,
'src' => '@' . realpath('public/images/users/' . $name),
);
$result = $this->_facebook->uploadPhoto($image);
链接地址: http://www.djcxy.com/p/19593.html
上一篇: Upload photo with Facebook Graph API and JavaScript: convert canvas image to multipart/form