我有一个使用角度和微风的SPA应用程序,允许现场人员创建新实体并实时提交给我们的ERP。他们可以拍照并上传它们(目前使用的是iPad,iPhone和Galaxy设备)。这一切都很好。
现在,我们希望在上传图片之前调整图片大小,以节省带宽,加快应用程序的速度,并且可以更轻松地将图片附加到电子邮件中。我有plupload(2.1.2)作为角度指令工作,它完美地调整/上传图像。问题是当创建新实体并且页面被重新加载时,plupload不再响应。我在输入字段中使用以下内容:
<input type="file"
capture="camera"
accept="image/*"
id="cameraInput"
pl-upload
pl-auto-upload="false"
pl-files-model="files"
pl-multi-params-model="multiParams"
pl-instance="uploadotron"
pl-entity="vm.report"
ng-file-select="vm.handleFile($files)"
ng-disabled="vm.state == 'Unchanged'" />
我用于plupload的选项是:
var options = {runtimes: 'html5',
browse_button : 'cameraInput',
multi_selection: false,
container: 'uploadcontainer',
max_file_size: '20mb',
multiple_queues: false,
url : '.breeze/Files/Upload',
flash_swf_url : iAttrs.plFlashSwfUrl,
silverlight_xap_url : iAttrs.plSilverlightXapUrl,
filters: [{title : "Image files", extensions : "jpg,jpeg,gif,png,tiff,pdf"}],
resize: {
width: 1024,
height: 768,
crop: false,
quality: 90
}
}
作为一种部分解决方法,我发现将一个实例对象(pl-instance =&#34; uploadotron&#34;上面,其中uploadotron附加到控制器中的$ scope)传递给指令允许我手动添加文件并触发上传,但这只会在iPad上每次尝试时触发ng-file-select。银河系正常运作。
所以问题是:
为什么在添加新实体时plupload会停止工作,以及如何修复它?我输入了大量的console.log语句并验证了当页面重新加载时,plupload的初始化似乎是通过指令发生的,但是浏览事件不再触发。如果我完全离开页面并返回,它会再次开始工作。但这并不完全是用户友好的。
为什么iPad(safari,iOS 7.1.1)只会在每个第二张照片/文件选择中调用ng-file-select功能?
感谢您提供任何帮助。
更新
我通过使用github(https://github.com/mailru/FileAPI/)上的FileAPI解决了我的问题,并编写了自己的指令来调用它。现在就像一个魅力。我认为问题的一部分是ng-file-select是不同指令的一部分,我没有马上意识到这一点。意思是我基本上在同一个输入元素中混合了两个指令。