使用angular-file-upload将中间数据从服务发送到控制器

时间:2014-05-08 18:33:31

标签: javascript angularjs file-upload angular-file-upload

我在这里使用角度文件上传:https://github.com/danialfarid/angular-file-upload。 正如您在同一页面上提供的示例中所看到的,文件数据使用可用的指令从控制器发布到后端。

当我实现代码时,我将文件发布移动到服务,因为这将允许我重新使用功能&感觉正确的方式(不同意?)。一切正常,但我无法弄清楚如何将跟踪文件上传完成状态的.progress(function(evt)){} ...函数发送到控制器并分别在html页面上回显。

使用.then我可以得到最终的成功回复,但是这个进度数据怎么样?

我在这里错过了一些非常简单的东西吗?怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

经过很长一段时间,这是如何运作的。

使用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 return的通知回调,我们可以访问文件完成百分比。

.then(function(response){},function(){},function(update){$scope.file_upload_percent=update});

按照您的意愿使用$ scope.file_upload_percent。