从图像URI创建Javascript文件/Blob对象



是否可以从图像URI中为我的图像创建一个文件或Blob对象?

使用Cordova Image Picker,我的移动应用程序上的一个插件,我可以检索照片的URI看起来像这样:"file:///data/user/0/..../Image .jpg"

然而,我现在试图创建一个文件或Blob对象,谷歌Firebase需要我的图像上传。我只是不知道该怎么做。我尝试的每一个解决方案似乎都是错误的,以至于我认为我从一个完全错误的角度来看待它。我是Javascript新手。非常感谢!

看看我之前发布的一个问题,这个问题涉及到视频(同样的原则适用):使用cordoafiletransfer将视频上传到firebase(3.0)存储

你需要使用cordova的file插件读取arrayBuffer,然后是blob;比如:

var file_path = "root/to/directory";
var name = "filename.jpg";
                $cordovaFile.readAsArrayBuffer(file_path, name)
                    .then(function (success) {
                        // success
                        console.log(success);
                      blob = new Blob([success], {type: "image/jpeg"});
                      console.log(blob);
                      var uploadTask = storageRef.child(name).put(blob);
                      uploadTask.on('state_changed', function(snapshot){
                        // Observe state change events such as progress, pause, and resume
                        // See below for more detail
                          var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
                          console.log('Upload is ' + progress + '% done'); 
                      }, function(error) {
                        // Handle unsuccessful uploads
                        console.log("Error uploading: " + error)
                      }, function() {
                        // Handle successful uploads on complete
                        // For instance, get the download URL: https://firebasestorage.googleapis.com/...
                        var downloadURL = uploadTask.snapshot.downloadURL;
                        console.log("Success!", downloadURL);
                      });
                      }, function (error) {
                        // error
                        console.log("Failed to read file from directory, error.code);
                      }

如果你的程序传递给你一个完整的路径到图像,你需要把名字和路径到存储图像的目录分开。查找最后一个/

之后的所有内容

相关内容

  • 没有找到相关文章

最新更新