0

私はファイルをアップロードし、私は私が持っていると信じているNg-File-Upload to Save PDF Blob to Database角度NG-ファイル・アップロードURLはMVC ApiController方法を見つけることができません

私の前の質問のように、データベースへのブロブを保存するためにNG-ファイル・アップロードを使用しようとしています」タスクを完了するための "正しい"コードがありますが、問題は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: '/SSQV4/SSQV5/api/Document/UploadEMRDocument' 

にURLを変更する必要がありました。あなたの助けてくれてありがとう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) –

関連する問題