离子 - 用相机拍照并将其发送到Amazon S3

时间:2015-09-28 12:12:34

标签: jquery angularjs amazon-web-services amazon-s3 ionic-framework

我正在构建一个带有Ionic框架的应用程序(angularjs + cordova)。

我希望用户能够使用手机摄像头拍照,并将其直接发送到亚马逊上的S3存储设备。

我知道如何拍照,并在本地文件系统上获取它的base64和它的URI:

ngcordova - camera

我也知道如何使用jquery

通过ajax将文件发送到S3

Direct upload to S3

现在,问题是我找到的所有文件上传都使用“input type = file”。如何设置使用本地URI或base64编码的字符串将文件传递给上传器?

1 个答案:

答案 0 :(得分:0)

我通过将相机插件返回的文件转换为blob来实现它,因为文件继承自blob,我可以通过定义假的本地文件名来通过S3上传器发送它

以下是构建blob的部分

        $cordovaCamera.getPicture(options).then(function(imageUrl) {

            var getFileBlob = function (url, cb) {
              var xhr = new XMLHttpRequest();
              xhr.open("GET", url);
              xhr.responseType = "blob";
              xhr.addEventListener('load', function() {
                  cb(xhr.response);
              });
              xhr.send();
            };
            var blobToFile = function (blob, name) {
                blob.lastModifiedDate = new Date();
                blob.name = name;
                return blob;
            };
            var getFileObject = function(filePathOrUrl, cb) {
               getFileBlob(filePathOrUrl, function (blob) {
                  cb(blobToFile(blob, 'test.jpg'));
               });
            };

            //File created
            getFileObject(imageUrl, function (fileObject) {
               deferred.resolve({imageUrl : imageUrl, fileObject : fileObject});
            }); 
          }, function(err) {
            // error
            console.warn(err);
            deferred.reject(err);
          });