我正在使用(
ngImgCrop)裁剪图像,然后使用(
angular-file-upload)将裁剪后的图像上传到服务器.
我可以从ngImgCrop中的“on-change”选项中获取$dataURI.但我需要一个File instace来调用$upload.
如何获取裁剪图像的File实例以便上传:
$scope.upload = $upload.upload({ url: '/api/fileupload',file: [**file cropped here**] }).progress(function (evt) { // }).success(function (data,status,headers,config) { // });
我猜你会在这个方法中找到合适的答案.我在Github中找到了它,在angular-file-upload issues页面(
https://github.com/nervgh/angular-file-upload/issues/208):
原文链接:https://www.f2er.com/angularjs/240428.html/** * Converts data uri to Blob. Necessary for uploading. * @see * https://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata * @param {String} dataURI * @return {Blob} */ var dataURItoBlob = function(dataURI) { var binary = atob(dataURI.split(',')[1]); var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; var array = []; for(var i = 0; i < binary.length; i++) { array.push(binary.charCodeAt(i)); } return new Blob([new Uint8Array(array)],{type: mimeString}); };
你应该能够得到一个像这样的文件实例:
var blob = dataURItoBlob($scope.croppedImage);
我不知道它是否以良好的方式运作,但似乎.