8

对于我的 vue 应用程序中的注册模块,我让用户以表单的形式上传图像。我将这些图像上传到我的存储中,并将这张照片的下载 url 保存在注册中。编辑注册时,我需要从存储中取出照片,这很简单,因为我得到了 url。但我需要它是一个 file() 对象。我找到了将它变成 blob 的方法,但它需要是一个文件。我怎样才能做到这一点?

4

3 回答 3

18

它可以通过请求一个 blob 并生成一个 File 对象来完成。有必要指定 blob 的 MIME 类型。

const urlToObject= async()=> {
  const response = await fetch(image);
  // here image is url/location of image
  const blob = await response.blob();
  const file = new File([blob], 'image.jpg', {type: blob.type});
  console.log(file);
}
于 2020-05-16T17:00:17.110 回答
0

带有 Promise的 ES6 方式:

const blobUrlToFile = (blobUrl:string): Promise<File> => new Promise((resolve) => {
    fetch(blobUrl).then((res) => {
      res.blob().then((blob) => {
        // please change the file.extension with something more meaningful
        // or create a utility function to parse from URL
        const file = new File([blob], 'file.extension', {type: blob.type})
        resolve(file)
      })
    })
  })
于 2021-11-18T04:07:31.300 回答
0

由于您让用户上传文件,因此您已经将该文件作为File对象。

但是,如果您想将其转换为 blob 以进行一些编辑并将其转换回File对象,则可以使用File()构造函数将 blob 转换为文件。

const file = new File([blob], "imagename.png");

另外,请注意 File() 构造函数将 blob 数组作为参数,而不是单个 blob。

于 2019-03-04T13:52:08.780 回答