使用 axios 将视频上传到 bunny 流

问题描述 投票:0回答:1

我需要将视频上传到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。”

我该怎么做?

javascript axios base64 bunny
1个回答
2
投票

错误告诉您密钥太长。

您的

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 示例中。

© www.soinside.com 2019 - 2024. All rights reserved.