gpt4 book ai didi

javascript - imgurl 上的 xhr html 文件上传给出了错误的请求

转载 作者:行者123 更新时间:2023-11-30 17:18:41 25 4
gpt4 key购买 nike

我想使用他们的 API 将图像上传到 imgur;使用 javascript (node.js)。我总是得到这样的回应:

{"data":{"error":"Image format not supported, or image is corrupt.","request":"/3/upload","method":"POST"},"success":false,"status":400}

这是我写的代码:

ImgUrlHelper = 
{
InitUploadValidateFile :function(element)
{
var file = element.value;
if(file === "")
return;

if(file != '')
{
var valid_extensions = /(.jpg|.jpeg|.gif|.png)$/i;
if(valid_extensions.test(file))
{
console.log("ok");
this.Upload(file);
}
else
console.log("notok");
}
else
console.log("notok");
},

Upload: function(file) {

var fd = new FormData();
fd.append("image", file);
var xhr = new XMLHttpRequest();

xhr.open("POST", "https://api.imgur.com/3/upload", true);
xhr.onload = this.OnLoad;
xhr.onerror = this.OnNetworkError;
xhr.onreadystatechange = this.OnReadyStateChange;
xhr.onprogress= this.OnProgress;

xhr.setRequestHeader('Authorization', 'Client-ID xxxxxxxxxxxx');
xhr.send(fd);
},

OnReadyStateChange:function(xhr){
if(xhr.readyState == 4 && xhr.status == 200)
{
var link = JSON.parse(xhr.responseText).data.link;
console.log(link);
}
if(xhr.status != 200)
{
console.log(xhr.status);


//log error
}
},

OnNetworkError:function(xhr)
{
//log error
console.log("network error while uploading.");
console.log(xhr);
},

OnProgress : function(e)
{
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete + '% uploaded');
}
},

OnLoad : function(res) {

}
}

我通过在输入 type="file"上使用 onchange 事件来调用它:

onchange="ImgUrlHelper.InitUploadValidateFile(this)"

我假设在读取我使用文件上传控件选择的文件时出现问题,此处:

fd.append("image", file); 

此时,文件包含字符串:“C:\fakepath\img.jpg”。我可能需要对图像进行实际编码吗?

最佳答案

您应该上传一个 File 对象,而不是一个字符串。

var file = element.value; 更改为 var file = element.files[0];:

// assuming that element is an <input type=file>
InitUploadValidateFile: function(element) {
var file = element.files[0];
if (!file)
return;

var valid_extensions = /(\.jpg|\.jpeg|\.gif|\.png)$/i;
if (valid_extensions.test(file.name)) {
console.log("ok");
this.Upload(file);
} else {
console.log("notok");
}
},

关于javascript - imgurl 上的 xhr html 文件上传给出了错误的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25585276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com