0

我試圖使用NG文件上傳文件上傳和保存BLOB數據庫爲我剛纔的問題Ng-File-Upload to Save PDF Blob to Database角伍,文件上傳的URL找不到MVC ApiController方法

我相信,我有「正確的「代碼來完成任務,但現在的問題是,我無法讓代碼在ApiController中」打「該方法。如果我把這個方法放在一個常規的異步控制器中,它會發現它(但是我不能使用一半所需的代碼,因爲它不起作用,除非它在從ApiController繼承的控制器中),但它不會在ApiController中找到相同的方法。我錯過了什麼?

這裏是角控制器代碼:

angular.module('myModule').controller('DocumentCtrl', function ($scope, $interval, $window, $filter, $q, $timeout, Upload, $http) { 
$scope.uploadPic = function (file) { 
    file.upload = Upload.upload({ 
     url: '/SSQV4/SSQV5/Document/UploadEMRDocument', 
     method: 'POST', 
     data: { file: file } 
    }) 
} 

}) 這裏是MVC控制器代碼:

public class DocumentController : ApiController 
{ 

    public async Task<IHttpActionResult> UploadEMRDocument() 
    { 

     try 
     { 
      var provider = new MultipartMemoryStreamProvider(); 
      await Request.Content.ReadAsMultipartAsync(provider); 

      var f = provider.Contents.First(); // assumes that the file is the only data 

      if (f != null) 
      { 
       var filename = f.Headers.ContentDisposition.FileName.Trim('\"'); 
       filename = Path.GetFileName(filename); 
       var buffer = await f.ReadAsByteArrayAsync(); 

       //buffer now contains the file content, 
       //and filename has the original filename that was uploaded 

       //do some processing with it (e.g. save to database) 
      } 
      else 
      { 
       return BadRequest("Attachment failed to upload"); 
      } 
     } 
     catch (Exception ex) 
     { 
      return BadRequest(ex.Message); 
     } 

     return Ok(); 

    } 
} 

我假定這是某種形式的路由問題,但我米不確定。任何援助非常感謝!

回答

0

我需要將URL更改爲

url: '/SSQV4/SSQV5/api/Document/UploadEMRDocument' 

現在它擊中它。感謝您的幫助Nava-Prev.Queti!

0

上傳使用Http POST發送文件,但是,您尚未指定您的操作方法應該偵聽POST。只需添加HttpPost屬性:

[HttpPost] 
public async Task<IHttpActionResult> UploadEMRDocument() 
+0

什麼是在您的「使用」聲明頂部?如果我使用System.Net.Http,我無法獲得api控制器。如果我使用System.Web.Http,我不能使用MultipartMemoryStreamProvider。當我嘗試使用它們並完全限定[System.Web.Http.HttpPost]時,它仍然找不到該方法。 –

+0

嗯,我得到了正確的HttpPost,但它仍然沒有擊中控制器方法,並且控制檯仍然顯示404(Not Found) –