我正在构建一个带有Ionic框架的应用程序(angularjs + cordova)。
我希望用户能够使用手机摄像头拍照,并将其直接发送到亚马逊上的S3存储设备。
我知道如何拍照,并在本地文件系统上获取它的base64和它的URI:
我也知道如何使用jquery
通过ajax将文件发送到S3现在,问题是我找到的所有文件上传都使用“input type = file”。如何设置使用本地URI或base64编码的字符串将文件传递给上传器?
答案 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);
});