Imgur API错误,如何使用XHR上传

时间:2013-04-11 04:15:24

标签: javascript jquery xmlhttprequest imgur

    var fd = new FormData();
    fd.append("image", file); // Append the file
    fd.append("key", API_KEY);
    // Create the XHR (Cross-Domain XHR FTW!!!)
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://api.imgur.com/2/upload.json"); // Boooom!
    xhr.onload = function() {
        console.log(JSON.stringify(xhr.responseText));
        alert("Anything?");
        var img_url = JSON.parse(xhr.responseText).upload.links.original;
        console.log("Image url of the uploaded image" + img_url);

上面的代码是我用来通过phonegap上传图像文件的代码。但后来我猜测代码已过时,可以使用最新的imgur API。由OAuth支持。我可以知道如何修复它以上传图像吗?

1 个答案:

答案 0 :(得分:5)

你是对的...代码已经过时,所以我修复的方法是匿名上传图片,并按照以下说明操作:

1.-在FormData中您只需要附加图片,因此不应附加密钥

2.-你必须发送一个带有你的客户端ID的标题,我假设你已经拥有...我用以下代码xhr.setRequestHeader('Authorization', 'Client-ID FOO');完成了 根据文档,它必须在打开XMLHttpRequest之后但在发送请求之前。

3.-当您尝试获取链接时,您必须解析JSON才能读取信息,链接出现在名为data的{​​{1}}节点中,因此解析将是:link

4.-您必须使用OAuth 2.0的新稳定API,因此上传图像的行应如下所示:var link = JSON.parse(xhr.responseText).data.link; ...正如您所看到的,它只是更改了数字,是版本,而不是xhr.open("POST", "https://api.imgur.com/3/image.json");它使用upload而且它必须是image ...对于您的信息,这是第一个建议的方法,另一种建议的方式,它也有效,如下:https

对于你的代码我也假设你使用了Drag'n Drop的例子,所以函数应该是这样的:

xhr.open("POST", "https://api.imgur.com/3/upload.json");

我建议您查看documentation,它非常友好,可以帮助您制作功能和内容...正如我所说这是匿名上传,如果您想上传图像用户,你必须首先使用用户和密码进行身份验证,使用令牌和刷新,我没有这样做,但是一旦你理解了它的运作方式就不会太复杂了......

希望它有所帮助!!