Provider'FileUpload'必须从$ get factory方法返回一个值

时间:2016-05-01 20:06:24

标签: angularjs http file-upload angularjs-injector angular-providers

在使用AngularJs制作的Web应用程序中,有一个用户可以上传文件的页面。但我有一些问题。 这是上传的工厂:

import os, csv
from zipfile import *

folder = r'D:/MarketData/forex'
localFiles = os.listdir(folder)

for file in localFiles:
    zipArchive = ZipFile(folder + '/' + file)

    with zipArchive.open(file[:-4] + '.csv') as csvFile:
        reader = csv.reader(csvFile, delimiter=',')

        for row in reader:
            print(row[0])

如果我尝试上传文件,控制台会给我这个错误:

angular.module('app').factory('FileUpload', ['$http', function($http) {
  this.uploadFileToUrl = function(file, uploadUrl){
    var fd = new FormData();
    fd.append('file', file);
    $http.post(uploadUrl, fd, {
      transformRequest: angular.identity,
      headers: {'Content-Type': undefined}
    })
      .success(function(){
      })
      .error(function(){
      });
  }
}]);

这是Controller中的功能:

"Error: [$injector:undef] Provider 'FileUpload' must return a value from $get factory method.

1 个答案:

答案 0 :(得分:0)

您使用的模式应使用service而不是factory。对于工厂,您希望返回new'd up实例,通过服务您只需提供该功能。

angular.module('app').service('FileUpload',...