【问题标题】:Sending intermediate data from service to controller using angular-file-upload使用 angular-file-upload 将中间数据从服务发送到控制器
【发布时间】:2014-05-08 18:33:30
【问题描述】:
我正在使用此处提供的 angular-file-upload:https://github.com/danialfarid/angular-file-upload。
正如您在同一页面上提供的示例中看到的那样,文件数据使用可用的指令从控制器发布到后端。
当我实现代码时,我将文件发布移动到服务,因为这将允许我重新使用功能并感觉正确的方式(不同意?)。一切正常,除了我无法弄清楚如何从 .progress(function(evt)){}... 函数发送数据,该函数跟踪文件上传完成状态到控制器并分别在 html 页面上回显。
使用.then 我猜我可以获得最终的成功响应,但是这个进度数据呢?
我在这里遗漏了一些非常简单的东西吗?如何完成这项工作?
【问题讨论】:
标签:
javascript
angularjs
file-upload
angular-file-upload
【解决方案1】:
过了很长时间,这就是它的工作原理。
使用 promise 的 notify 回调可以解决问题。正如我之前所说,我已将文件上传代码(基于此代表enter link description here)移动到角度服务中,但我无法获得文件上传进度。由于我是从服务返回承诺,所以我只能完成文件。
上面的git rep也有一个
.progress(function(evt){ file_upload_percent=(parseInt(100.0 * evt.loaded / evt.total)})
给出文件完成百分比的函数。在这里使用promise notify,我们可以像这样返回这个中间值:
.progress(function(evt) { file_upload_percent=(parseInt(100.0 * evt.loaded / evt.total)); deferred.notify(file_upload_percent);})
稍后使用promise返回的通知回调,我们可以访问文件完成百分比。
.then(function(response){},function(){},function(update){$scope.file_upload_percent=update});
根据需要使用 $scope.file_upload_percent。