Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Facebook Graph API和JavaScript上传照片:将画布图像转换为多部分/表单数据作为帖子正文?_Javascript_Jquery_Facebook_Facebook Graph Api_Cordova - Fatal编程技术网

使用Facebook Graph API和JavaScript上传照片:将画布图像转换为多部分/表单数据作为帖子正文?

使用Facebook Graph API和JavaScript上传照片:将画布图像转换为多部分/表单数据作为帖子正文?,javascript,jquery,facebook,facebook-graph-api,cordova,Javascript,Jquery,Facebook,Facebook Graph Api,Cordova,从这个主题和我们在web上其他地方的研究(比如Facebook)来看,似乎可以直接从canvas.toDataURL()将图像上传到Facebook,而无需将图像托管在服务器上 我们面临的问题是如何将base64编码的数据从toDataURL()转换为Facebook期望的多部分/表单数据。在客户端使用JavaScript和?如果没有,我们可以先在服务器上保存映像,但如果可能的话,我们更愿意跳过这一步,从客户端执行所有操作 这适用于PhoneGap应用程序。可以将画布作为图片上传到服务器上。2年

从这个主题和我们在web上其他地方的研究(比如Facebook)来看,似乎可以直接从canvas.toDataURL()将图像上传到Facebook,而无需将图像托管在服务器上

我们面临的问题是如何将base64编码的数据从toDataURL()转换为Facebook期望的多部分/表单数据。在客户端使用JavaScript和?如果没有,我们可以先在服务器上保存映像,但如果可能的话,我们更愿意跳过这一步,从客户端执行所有操作


这适用于PhoneGap应用程序。

可以将画布作为图片上传到服务器上。2年前我做了一个测试,您可以查找代码:

这是在使用mootools,但实际上并不需要它,save函数中的所有内容都是原生JS代码


与facebook的整合应该不是什么大问题

基本上,你需要删除“数据: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);

酷,谢谢@standup75。您知道jQuery.post()是否可以做到这一点吗?否则,像您那样编写AJAX请求也可以,但如果可能的话,我们更愿意通过jQuery.post()来完成所有操作。我想不会,save函数正在“手动”生成多部分请求@standup75为什么不呢?通过设置contentType,使用$.post发送多部分请求正文不起作用吗?如果使用$.post,jQeury会为您在请求正文中发布变量,这与此处的操作方式冲突,因为我们正在通过格式化自己的ISO 8859 StringThreak@pradeek和standup75来构建请求的主体,但不幸的是,它似乎不适用于Facebook。抱歉,JS和jQuery中都有一些东西。。。没有PHP。