【发布时间】:2020-10-24 22:47:51
【问题描述】:
我在使用 Imgur API 时遇到问题。我收到了用于匿名上传媒体文件的 clientId。然后我尝试将此凭据用于 API 请求。我在使用“https://api.imgur.com/3/upload”路由从客户端浏览器 Javascript 上传时遇到问题,但后来我发现“https://api.imgur.com/3/image”有效正如预期的图像上传(以 base64 格式),但无法按预期的视频上传(二进制格式,因为 base64 返回错误),在更改以二进制格式发送视频的方法后,我收到了 200 个响应代码,但我收到的唯一信息(除了状态信息)是“票证”字段,没有其他信息(没有错误消息或代码)。而且我不知道如何使用这些信息来访问上传的视频。这种类型的响应没有记录在任何地方,我不确定它是否应该像现在这样工作。你能帮我处理这个案子吗?也许有人有类似的情况。我附上了来自 Chrome 的 'har' 请求信息,这样你就可以看到我是如何提出请求的,也许我在某个地方弄错了。真的在等你的答复,谢谢!
发送文件功能:
sendFile = async (fileObj) => {
const myHeaders = new Headers();
myHeaders.append('Authorization', uploadCredentials);
const formData = new FormData(),
{
type
} = fileObj,
fileTitle = fileObj.file.name.split('.').shift(),
splitDataMarker = ';base64,';
let fileData;
if (type === 'image') {
const indexOfMarker = fileObj.data.indexOf(splitDataMarker),
indexOfDataStart = indexOfMarker ? indexOfMarker + splitDataMarker.length : 0;
fileData = fileObj.data.substr(indexOfDataStart);
formData.append('type', 'base64');
} else if (type === 'video') {
formData.append('type', 'file');
const res = await fetch(fileObj.data);
fileData = await res.blob();
}
formData.append(type, fileData);
formData.append('name', fileObj.file.name);
formData.append('title', fileTitle);
const requestOptions: any = {
method: 'POST',
headers: myHeaders,
body: formData,
redirect: 'follow',
};
try {
const res = await fetch(uploadUrl, requestOptions),
data = await res.json();
return data;
} catch (error) {
throw Error(error);
}
},
【问题讨论】:
标签: javascript api video upload imgur