React Native(Expo) 文件对象与 Javascript(jQuery) 文件对象 - Blob/File 大小不同(YouTube 数据 API)

React Native(Expo) File object vs Javascript(jQuery) File object - Blob/File size differ (YouTube Data API)

我正在尝试在 React Native 中创建一个 File 对象,以使用该文件(视频)将其上传到 YouTube Data v3 API。我使我的应用程序在普通 Javascript 中正常工作,我正在尝试使其在 React Native 中工作 - 上传部分有效,但我在 React Native 中获取视频文件时遇到问题。

这是我的工作代码 JavaScript 使用 jQuery:

function getVideoFile() {
        return $('#file').get(0).files[0];      
      }

我只是使用 jQuery(returns 一个 File 对象)获取视频文件并将其发送到 API 并且上传没有问题。

到目前为止,这是我的 React Native:

let file = await fetch('./assets/video.mp4');
let videoFile = await file.blob();
var blob = videoFile.slice(0, videoFile.size, "video/mp4")
var f = new File([blob], "video.mp4", {type: "video/mp4"});

在 React Native 中上传到 YouTube 没有任何错误,但在 YouTube 上的“我的视频”页面中我得到了

Processing abandoned
The video could not be processed

我在 JavaScript 和 React Native 代码中看到的唯一区别是 File 对象 size 属性 值。 JavaScript (1570024) 中 File 对象的大小远大于 React Native (3539) 中的大小——它是同一个视频文件。有人可以解释为什么文件大小不同,因为我很难理解,我做错了什么,或者将 React Native 中的视频文件读入 File 对象的正确方法是什么?

更新 1

我在普通 javascript 中测试了我的 React Native 获取代码,它获得了合适的文件大小,YouTube 成功处理了上传的视频。在我的 React Native 应用程序中,这个相同的函数通过获取更小的文件大小而表现不同。

async function getVideoFile() {     
    let file = await fetch('video.mp4');
    let videoFile = await file.blob();
    return new File([videoFile], "video.mp4", {type: "video/mp4"});     
}

我找到了解决办法!在 React Native 中,首先我需要使用 require 来获取正确的路径。

var path = require("./assets/video.mp4");
let response = await fetch(path);
var blob = await response.blob();      
var file = new File([blob], "video.mp4", {type: "video/mp4"});

出于某些奇怪的原因,即使 url/file 不存在,我的 React Native 应用程序中 fetch() 始终处于 returns 200 ok 状态。