2016-04-05 16 views
1

bir CloudBlockBlob için Http/StreamContent yükleme: Azure Blob Depolama - Ben gibi Açısal kullanarak bir POST isteği ile benim WebAPI Denetleyicisi bir PDF dosyası gönderiyorum WebAPI Kontrolörü

$scope.upload = Upload.upload({ 
     url: "../api/Locker/Upload", // webapi url 
     method: "POST", 
     file: controllerFile, 
    }) 

hangi benim POST yöntemi benim Ben buna StreamContent tiptedir diyor fileData yazarken o results.Contents [0] tip HttpContent arasında ancak komut penceresi içinde olduğunu söylüyor

public async Task<HttpResponseMessage> Post() 
    { 
     HttpRequestMessage request = this.Request; 
     if (!request.Content.IsMimeMultipartContent()) 
     { 
      request.CreateResponse(HttpStatusCode.UnsupportedMediaType); 
     } 

     var result = await Request.Content.ReadAsMultipartAsync<CustomMultipartFormDataProvider>(new CustomMultipartFormDataProvider()); 

     string fileName = result.FileData[0].Headers.ContentDisposition.FileName; 
     var fileData = result.Contents[0]; 

} 

şu şekildedir: kontrolör ben o dosyanın StreamContent olsun.

Azure Blob Storage'a bu dosyada veri yüklemeye çalışıyorum, böylece daha sonra GET isteğini kullanarak alabiliyorum, ancak sorun yaşıyorum.

private async void UploadToBlob(CloudBlobContainer container, string blobId, HttpContent fileData) 
    { 
     CloudBlockBlob block = container.GetBlockBlobReference(blobId); 
     block.UploadFromStream(fileData); 
    } 

hatası block.UploadFromStream üzerinde fileData elbette Akış olmadığı için: Ben şaşırıp

//in post method 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(blobConnectionString); 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
    CloudBlobContainer container = blobClient.GetContainerReference(blobContainer); 
    await container.CreateIfNotExistsAsync(); 

    string blobId = Guid.NewGuid().ToString(); 

    UploadToBlob(container, blobId, fileData); 

ve yöntemi. Ben türü içeriği varlık ile bir HTTP Yanıtı bekliyorum eğer

Ne yapabilirim: arraybuffer ben gibi benim web uygulaması dosyayı açığa böylece: bekliyoruz (

//angular get request 
.success(function (data, status, headers, config) { 
     // file is uploaded successfully 
     console.log(data); 

     var fileBack = new Blob([(data)], { type: 'application/pdf' }); 
     var fileURL = URL.createObjectURL(fileBack); 
} 

cevap

2

Ne block.UploadFromStream hakkında fileData.ReadAsStreamAsync())?