我被Reaction应用程序中的文件上传过程困住了.在这款应用中,我正在try 将本地视频文件上传到Google Cloud Storage.

我从以下位置获取输入文件:

<input type={`file`} accept=".mp4" onChange={VideoSelectChangeFunc} />

VideoSelectChangeFunc中,我通过以下方式获取输入文件的本地URL:

let file = URL.createObjectURL(event.target.files[0])

然后我在axios中使用它来发送到云

export const UploadVideo = async (file, signedurl, asset_uuid) => {
    let resultState = { state: '', data: {} };

    await axios({
        method: 'put',
        url: signedurl,
        data: file,
        headers: {
            'Content-Type': 'application/octet-stream',
        },
    }).then(function (response) {
        resultState.state = 'success';
        resultState.data = response.data
    }).catch(function (error) {
        resultState.state = 'error';
        resultState.data.message = error.message;
        window.toastr.error(error.message);

        console.log(error)
    })

    return resultState;
}

我在云上看到的是:

blob:http://localhost:3000/9b650cbf-8b49-440b-9e90-da6bdb5d392a

这只是字符串形式的文件的本地URL,而不是视频本身,当我将其复制粘贴到浏览器上时,我可以看到视频.我搜索了一下情况,发现'Content-Type': 'blob'个可以解决这个问题.但是,我们正在判断CORS Policy中的标头,因此它必须是'Content-Type': 'application/octet-stream'.有没有办法解决这个问题?

推荐答案

在发送之前,将BLOB URL转换为文件成功.然后我只添加了这两行,称为AXIOS.

let blob = await fetch(blobURL).then(r => r.blob());
var file = new File([blob], "thisVideo.mp4",{type:"video/mp4", lastModified:new Date().getTime()})

在文件不是立即上载而是临时保存的URL供以后调用的情况下,这可能是有用的,这里就是这种情况.如果你有兴趣,也可以访问这个问题:

How to get a file or blob from an object URL?

Reactjs相关问答推荐

我想将状态设置为true,直到每一张卡片都生成并在多姆中呈现

如何使用json将购物车数组传递到后台API

无法覆盖MUI工具栏上的左右填充,除非使用!重要

App.js中的H2组件不会动态呈现.这可能是什么问题?

有没有办法将MUI网格元素与Flex-Start对齐?

for each 子级加载父路由加载器

在迭代状态时无法读取未定义的属性(读取 map )

如何将 DocuSign 控制台界面嵌入到 React 应用中

React 组件列表中的第一个计时器正在获取值 NaN

如何在不重新加载页面的情况下加载新添加的数据?

如何在 React Native 中更新跨屏幕呈现的上下文状态变量?

需要在窗口调整大小时更新 React 组件

不能在我的代码中使用 .给我一个警告!有人知道解决方案吗?

如何从其他组件访问 useQuery refetch 方法?

react-query、react-hook-form 和表单验证

如何将 id 从页面传递到另一个页面?

在 React 中使用使用状态挂钩合并两个数组

无法有条件地更新useEffect中的setState

RTK 查询 POST 方法不会改变数据

react 路由:router.ts:11 没有匹配的路由位置/管理