【问题标题】:Javascript: FileUri to blob conversionJavascript:FileUri 到 blob 的转换
【发布时间】:2017-11-13 15:37:45
【问题描述】:

我想从本地存储上传文件。但是从本地存储中,我得到了类似file:///data/user/0/application_package/cache/IMG-199201092.jpg 的文件url。我想将其转换为blob 文件或file 的任何arrayobject,以便可以通过XMLHttpRequest 将其发送到服务器。这样我就可以在服务器上保存它们。

我试过这段代码:

var reader = new FileReader();
var blob_image = reader.readAsDataURL(imageUri);

但是blob_image 我无法通过“$_FILES”在服务器上获取它作为图像或其他东西。

我从

获取 imageUri
$cordovaImagePicker.getPictures(options)
.then(function (results) 
{
   for (var i = 0; i < results.length; i++)
    {
 var image_uri = results[i];
 var fd = new FormData();
 //Take the first selected file                             
 var blobbb = new Blob([new Uint8Array(results[i])], { type: "file" });
 fd.append("file", blobbb  );
 objXhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
        console.log( objXhr.responseText );
        }
    };
 objXhr.open("POST", "http://someapi.com/api.php");
 objXhr.send(fd);
    }
}

【问题讨论】:

  • 请向我们展示代码...您没有提供足够的信息。如果您不显示它,我们如何解决 ajax 部分?此外,您拥有的不是 dataUrl 而是文件路径。另外,我真的很想知道您如何获得完整的 URL,因为通常您只会从上传表单中收到上下文信息。
  • @Salketer ,先生,我当然添加了代码。
  • 我现在也在尝试var blobbb = new Blob([new Uint8Array(results[i])], { type: "file" }); 这个代码.. 但没有成功:(
  • 问题是cordovaImagePicker 只返回一个文件路径,而不是实际的图像数据......您需要使用其他东西来读取文件并上传它。我不知道足够多的科尔多瓦来帮助解决这个问题。但是通读这个问题,有人显示他们的上传代码github.com/wymsee/cordova-imagePicker/issues/26
  • 是的,它只返回文件路径。我想读那个文件:'(

标签: javascript cordova file-upload blob filereader


【解决方案1】:

抱歉回复晚了,但您使用的类型(类型:“文件”)可能是一个原因:这不应该是 MIME 类型,例如。 “图片/png”?

【讨论】:

  • 点评来源: 嗨,这篇文章似乎没有为问题提供quality answer。请编辑您的答案并改进它,或者将其作为对问题/其他答案的评论发布。
猜你喜欢
  • 2017-10-24
  • 2018-11-10
  • 2017-11-21
  • 2020-02-12
  • 2019-01-29
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多