【问题标题】:How to convert a video into base64 using expo(Filesystem)如何使用 expo(文件系统)将视频转换为 base64
【发布时间】:2021-12-10 09:54:02
【问题描述】:

我正在尝试向 cloudinary 发送视频,我似乎有一些类似的问题,但没有人回答我的问题。如何使用“Filesystem.readAsStringAsync”转换我的视频,以便将其发送到 cloudinary。这是我的一些代码。

    let pickerResult = await ImagePicker.launchImageLibraryAsync({
    allowsEditing: true,
    aspect: [4, 3], 
    base64: true, 
    mediaTypes: ImagePicker.MediaTypeOptions.Videos, 
    });

    if (pickerResult.cancelled === true) { 
    return; 
    } 

    const base64Img 
    =`data:video/mp4;base64,${FileSystem.readAsStringAsync(pickerResult.uri{encoding: 
    'base64'})}`;

    let data = {
    "file": base64Img, 
    "upload_preset": "******",
     } 

     const r = await fetch(CLOUDINARY_URL, { 
     body: data,
     method: 'POST',
     }) 
     const datal = await r.json()
     setVideo(datal.secure_url); };

我知道这不是正确的使用方法,因为它只是不断返回一个空字符串或 null,如果您需要更多信息,请告诉我如何解决这个问题

【问题讨论】:

  • 您能确保 CLOUDINARY_URL 变量设置正确吗?即 - https://api.cloudinary.com/v1_1/<cloud name>/<resource_type>/upload 根据this。通常,如果出现问题,Cloudinary 会以错误详细信息进行响应。

标签: react-native expo cloudinary


【解决方案1】:

base64字符串读取文件的方式不对。

按照以下方式进行。

let pickerResult = await ImagePicker.launchImageLibraryAsync({
  allowsEditing: true,
  aspect: [4, 3],
  base64: true,
  mediaTypes: ImagePicker.MediaTypeOptions.Videos,
});

if (pickerResult.cancelled === true) {
  return;
}

const fsRead = await FileSystem.readAsStringAsync(pickerResult.uri, {
  encoding: "base64",
});

const base64Img = `data:video/mp4;base64,${fsRead}`;
// This looks like data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAADGUbW9vdgAAAGxtdmhkAAAAAAAAAAAAAA

let data = {
  file: base64Img,
  upload_preset: "******",
};

const r = await fetch(CLOUDINARY_URL, {
  body: data,
  method: "POST",
});

const datal = await r.json();
setVideo(datal.secure_url);

【讨论】:

  • 感谢我在半路将其转换为 base64,但它还没有发送到 cloudinary
  • 您是否收到任何错误,如果有,是什么错误?另外,您将 CLOUDINARY_URL 定义为什么?如果包含,请确保不要分享您的 api_secret。
  • 不行,我只需要创建一个加载组件……因为 cloudinary 返回数据需要一点时间
猜你喜欢
  • 2014-04-05
  • 2015-09-18
  • 2020-12-08
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2022-01-28
  • 2015-04-29
相关资源
最近更新 更多