2016-03-30 18 views
2

Bu gönderiyi en son girişimlerimi aşağıda göstermek için düzenliyorum. Bir çözüm bulmaya çalışan forumları araştırıyorum. Angular kullandığım bir ASP.NET MVC Uygulaması var. Kullanıcıların daha sonra veritabanına ikili veri olarak kaydedilen PDF'leri yüklemesine izin vermek için danialfarid/ng-file-upload'u kullanmaya çalışıyorum (fikrim değil, ama bunu böyle yapmak zorundayım).PDF Blobunu Database'e Kaydetmek için Ng-File-Upload

Ben benim HTML (örnekler alınır) Aşağıdaki:

    File:<input type="file" ngf-select ng-model="picFile" name="file" accept="image/*" ngf-max-size="2MB" required ngf-model-invalid="errorFile"><br /> 
       <img ngf-thumbnail="picFile" class="thumb"> <button ng-click="picFile = null" ng-show="picFile">Remove</button><br /> 
       <button type="button" class="btn btn-primary" ng-click="uploadPic(picFile)">Upload</button> 

Ve bu benim Açısal denetleyicisi:

$scope.uploadPic = function (files) { 
    file.upload = Upload.upload({ 
     url: '/SSQV4/SSQV5/Document/UploadEMRDocument', 
     data: {file: files} 
    }) 
} 

My MVC denetleyicisi:

namespace SSQV5.Controllers 
{ 
    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(); 


     } 
    } 
} 

Bu kod asla MVC Denetleyicisine ulaşmaz. Belli ki bir şeyleri özlüyorum ama ne olabileceğine dair en ufak bir fikrim yok. Herhangi bir yardım büyük beğeni topluyor!

cevap

1

Form verilerinin dışarı dosya içeriğini ayıklamak gerekir.

Uygulamamda ekleri yüklemek için bunu nasıl yaptığım aşağıda (ng-file-upload'u ön uç ile aynı şekilde kullanıyor). Bunu denedim.

public async Task<IHttpActionResult> UploadAttachment() 
{ 
    // Check if the request contains multipart/form-data. 

    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

Bu bana tüm hata türlerini verir: System.Web.HttpRequestBase 'İçerik' için bir ayrım içermiyor, 'Prens' adı geçerli bağlamda mevcut değil ', geçerli bağlamda "BadRequest" adı mevcut değil . Bu, diğer birçok kodu veya ifadeleri kullanma eksik olmalı. Lütfen bana başka neye ihtiyaç olduğunu söyler misin? –

+0

Bu bana her türlü hataları veriyordu, ancak biraz araştırma ApiController'dan miras almam gerektiğini gösterdi. Ancak, bu kodu kullanarak: $ scope.uploadPic = işlev (dosya) { dosya.upload = Yükle.upload ({ url: '/ SSQV4/SSQV5/Belge/UploadEMRDocument', veri: {dosya: dosya} } } hiçbir zaman denetleyici yöntemine ulaşmaz. Neyi kaçırıyorum? –

1

yüklemeyi yapılandırırken, dosyanın gönderileceği URL'yi belirtin:

file.upload = Upload.upload({ 
     url: 'myMVC/MyMethod', 
     data: {file: file} 
    }) 
+0

Bunu denedim. MVC Denetleyicisine çarptığında boştur. –

İlgili konular