我需要将视频上传到bunny流:bunny文档
我将文件转换为base64,就像你在这里所做的那样:上传文件:BODY PARAMS
如果您选择 js axios 作为语言,您将看到以 base64 格式设置的数据值
这是我的代码:
function UploadVideo(e){
const data = new FormData();
let file = e.target.files[0];
let video;
const toBase64 = file => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
async function Main() {
video = await toBase64(file);
}
Main();
const c_options = {
method: 'POST',
url: 'https://video.bunnycdn.com/library/49034/videos',
headers: {
Accept: 'application/json',
'Content-Type': 'application/*+json',
AccessKey: ''
},
data: '{"title":"test"}'
};
axios.request(c_options).then(function (c_response) {
//upload start
const u_options = {
method: 'PUT',
url: `https://video.bunnycdn.com/library/49034/videos/${c_response.data.guid}`,
headers: {
Accept: 'application/json',
AccessKey: ''
},
data: video,
};
axios.request(u_options).then(function (u_response) {
//post url to php
console.log(u_response.data);
}).catch(function (error) {
console.error(error);
});
//upload end
console.log(c_response.data);
}).catch(function (error) {
console.error(error);
});
}
但它返回状态代码 400
400 错误文本:“无法读取请求表单。超出表单密钥长度限制 2048。”
我该怎么做?
错误告诉您密钥太长。
您的
data
属性应该是一个对象,因为 axios 默认 Content-Type
(您已省略)是 application/x-www-form-urlencoded
。
如果您想发送文件,那么您需要将标头中的
Content-Type
设置为Content-Type: application/octet-stream
,即您的标头对象应该是
headers: {
Accept: 'application/json',
AccessKey: '',
Content-Type: 'application/octet-stream'
},
这显示在您链接到的 bunny.net 页面上的 javascript 示例中。