2016-05-31 216 views
0

链接到悬浮窗:https://github.com/enyo/dropzone悬浮窗,角,MVC5实施

我试图用悬浮窗为我的文件上传的处理程序,使用angularjs和MVC5。

问题是我似乎无法得到Http帖子从angularjs服务转到MVC 5后端。

我要发布的文件中包含的动作其它值一起,并

下面名为“值”的字符串值是代码(在服务,angularjs)

sendProductFiles: function (act, file, val) { 
     return $http.post('/attributes/uploads', $.param({ 
      action: act, 
      files: file, 
      values: val 
     }), 
     { 
      transformRequest: angular.identity, 
      headers: { 
       'Content-Type': undefined 
      } 
     }) 
    } 

在控制(角)

$scope.intakeUpload = function (files) { 
    var fd = new FormData(); 
    for (var i = 0; i < files.length; i++) 
     fd.append('file', files[i]); 


    AttributionViewService.sendProductFiles("addAttr", fd, $scope.selectedValues).then(function (res) { 

    }, function (err) { 

    }); 
} 
    Dropzone.options.myAwesomeDropzone = { 

    autoProcessQueue: false, 
    uploadMultiple: true, 
    parallelUploads: 100, 
    maxFiles: 100, 

    // Dropzone settings 
    init: function() { 
     var myDropzone = this; 

     this.element.querySelector("button[type=submit]").addEventListener("click", function (e) { 
      e.preventDefault(); 
      e.stopPropagation(); 
      myDropzone.processQueue(); 
     }); 
     this.on("sendingmultiple", function (files) { 
      $scope.intakeUpload(files); 
     }); 
     this.on("addedfile", function (file) { 
      file.previewElement.addEventListener("click", function() { this.removeFile(file); }); 
     }); 
    } 

} 

在MVC 5共ntrol

[HttpPost] 
    [Route("attributes/uploads")] 
    public ActionResult AcceptUploads(string action, HttpPostedFile[] files, string values) 
    { 
     if (files.Length <= 0) 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     foreach (var file in files) 
     { 
      System.Diagnostics.Debug.WriteLine(file.FileName); 
     } 
     System.Diagnostics.Debug.WriteLine(values); 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

在当前状态下,我得到一个jQuery的错误 的jquery.js:8458遗漏的类型错误:非法调用

编辑,也试过如下:

角服务

sendProductFiles: function (act, file, val) { 
     return $http.post('/attributes/uploads', $.param({ 
      action: act, 
      files: file, 
      values: val 
     }), { 
      headers: { 
       'Content-Type': 'multipart/form-data' 
      } 
     }) 

回答

0

修好了!

$scope.intakeUpload = function (files) { 
    var fd = new FormData(); 
    for (var i = 0; i < files.length; i++) 
     fd.append('files', files[i]); 

    fd.append("action", "addAttr"); 
    fd.append("values", $scope.selectedValues); 
    AttributionViewService.sendProductFiles(fd).then(function (res) { 

    }, function (err) { 

    }); 
} 


[HttpPost] 
    [Route("attributes/uploads")] 
    public ActionResult AcceptUploads(string action, IEnumerable<HttpPostedFileBase> files, string values) 
    { 
     if (files.Count() <= 0) 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     foreach (var file in files) 
     { 
      System.Diagnostics.Debug.WriteLine(file.FileName); 
     } 
     System.Diagnostics.Debug.WriteLine(values); 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    }