当前位置: 首页 > 知识库问答 >
问题:

如何从对象URL获取文件或blob?

端木高邈
2023-03-14

我允许用户通过拖动将图像加载到页面中

那么,当需要创建一个FormData对象时,我可以允许他们上传一个包含其中一个图像的表单,有没有什么方法可以将该对象URL反转回Blob文件,然后将其附加到FormData对象?

共有3个答案

伍胡媚
2023-03-14

也许有人在使用React/Node/Axios时发现这很有用。我将此用于我的Cloudinary图像上传功能,用户界面上有react-dropzone

    axios({
        method: 'get',
        url: file[0].preview, // blob url eg. blob:http://127.0.0.1:8000/e89c5d87-a634-4540-974c-30dc476825cc
        responseType: 'blob'
    }).then(function(response){
         var reader = new FileReader();
         reader.readAsDataURL(response.data); 
         reader.onloadend = function() {
             var base64data = reader.result;
             self.props.onMainImageDrop(base64data)
         }

    })
陶锋
2023-03-14

正如gengkev在上面的评论中提到的,看起来最好/唯一的方法是使用异步xhr2调用

var xhr = new XMLHttpRequest();
xhr.open('GET', 'blob:http%3A//your.blob.url.here', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
  if (this.status == 200) {
    var myBlob = this.response;
    // myBlob is now the blob that the object URL pointed to.
  }
};
xhr.send();

更新(2018):对于可以安全使用ES5的情况,Joe有一个更简单的基于ES5的答案。

白和泽
2023-03-14

现代解决方案:

let blob = await fetch(url).then(r => r.blob());

url可以是对象url或普通url。

 类似资料:
  • 问题内容: 我允许用户通过拖放和其他方法将图像加载到页面中。放置图像时,我用来转换为对象URL以显示图像。我没有撤消该URL,因为我确实重复使用了它。 因此,当需要创建一个对象时,我可以允许他们上传其中包含其中一个图像的表单,是否可以通过某种方式将该对象URL反向转换为a ,然后可以将其附加到a 宾语? 问题答案: 正如gengkev在上面的评论中所暗示的那样,似乎最好/唯一的方法是使用异步xhr

  • 问题内容: 我需要从URL对象创建一个File对象我的需求是我需要创建一个网络图像的文件对象(例如googles徽标) 问题答案: 您可以利用以便从URL加载图像,然后将其写入文件。像这样: 如果需要,这还允许您将图像转换为其他格式。

  • 问题内容: 我有一个网址,返回的是这样的JSON对象: 我想获得价值。那么如何通过PHP检索它呢? 问题答案: $json = file_get_contents(‘url_here’); $obj = json_decode($json); echo $obj->access_token; 为此,需要启用它。可以通过在运行时完成以下操作来实现: 您也可以使用获取网址。要使用卷曲,可以使用中发现的

  • 我有一个返回JSON对象的URL,如下所示: 我想从URL获取JSON对象,然后获取值。 那么如何通过PHP检索它呢?

  • 问题内容: 我有一个RSA私钥文件(OCkey.pem)。使用Java我必须从该文件中获取私钥。该密钥是使用以下openssl命令生成的。注意:我无法在下面的此openssl命令上进行任何更改。 证书如下所示。 ///////////////////////////////////////////////////// ////////// bash-3.00美元少OCkey.pem ----- B

  • 我正在尝试从检索或实例,而不将保存到文件系统。 中是否有任何方法从现有的返回或?