2014-03-26 13 views
0

我要疯了与图像上传到Facebook。我已经尝试过使用HTML5拖放方法Dropzone.js,并在通过PHP提交图像之前上传到我自己的服务器。但是我唯一可以工作的人(因为我的经验不足,我承认)并且不涉及将图像上传到我自己的服务器,通过使用如下所示的HTML表格:Facebook documentation使用Javascript和HTML格式提交图像到Facebook

我使用Javascript动态生成它,并使用var的填写event_idaccess_token

这工作正常,所以我所有的权限和授权都是正确的。现在我想要做的是处理响应,因为当用户点击submit时,浏览器按照您的预期发挥作用,并显示显示帖子ID和内容的基本文本。

所以,我创建了一个按钮,结合以下到它的click事件:

var fd = document.getElementById('upload_form'); 
if (fd) { 
    console.log('Sending'); 
    var XHR = new XMLHttpRequest(); 
    XHR.addEventListener('load', function(data) { 
    console.log('XHR finished:'); 
    console.log(data); 
}); 

XHR.addEventListener('error', function(data) { 
    console.log('XHR ERROR:'); 
    console.log(data); 
}); 

var graph_url = 'https://graph.facebook.com/'+event_id+'/photos?access_token=' + access_token; 
XHR.open('POST', graph_url); 
XHR.send(fd); 
} 

一旦用户选择的图像并单击我的按钮执行上述XHR完成发送和报告,完成后,但Facebook与回复:

(#324)Requires upload file.

请能有人告诉我在哪里,我错了 - 这是一个问题了好几天了!

回答

1

时,如果你愿意使用jQuery和jquery.ajaxForm plugin

<!-- You form code stay Make sure your form.action url is valid ajaxForm use that as url --> 

<form id=“upload_form” enctype="multipart/form-data" action=“https://graph.facebook.com/event_id/photos?access_token=an_access_token” method="POST"> 
Please choose a photo 
<input name="source" type="file"><br/><br/> 
Say something about this photo: 
<input name="message" type="text" value=""><br/><br/> 
<input type="submit" value="Upload"/><br/> 
</form> 


//your javascript to upload the image togather with message 
// put this in a button, not submit button 
$('#upload_form').ajaxForm({ 
    complete: function(data) { 
     //process fb response 
    } 
}); 
+0

谢谢韦恩,对于迟到的回复表示歉意。我会尽快尝试你的建议。 – Todd

+0

就是那个韦恩!第一次工作。 – Todd

1

我建议你使用Fiddler赶上两个连接,使用和不使用XMLHttpRequest的,看看这两个要求之间的实际差异,我真的不知道什么XHR.send(fd);做,但也许它的发送形式的内容本身,而不是提交它?

提琴手是一个非常有用的工具连接到外部的API

+0

感谢,我给它一个去。 – Todd

+0

我从来没有机会尝试Fiddle,但是当我的按钮代码被点击时,你几乎肯定是正确的。 – Todd