【发布时间】:2017-11-13 15:37:45
【问题描述】:
我想从本地存储上传文件。但是从本地存储中,我得到了类似file:///data/user/0/application_package/cache/IMG-199201092.jpg 的文件url。我想将其转换为blob 文件或file 的任何array 或object,以便可以通过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