我在这里使用角度文件上传:https://github.com/danialfarid/angular-file-upload。 正如您在同一页面上提供的示例中所看到的,文件数据使用可用的指令从控制器发布到后端。
当我实现代码时,我将文件发布移动到服务,因为这将允许我重新使用功能&感觉正确的方式(不同意?)。一切正常,但我无法弄清楚如何将跟踪文件上传完成状态的.progress(function(evt)){}
...函数发送到控制器并分别在html页面上回显。
使用.then
我可以得到最终的成功回复,但是这个进度数据怎么样?
我在这里错过了一些非常简单的东西吗?怎么做到这一点?
答案 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。