Ich bin über eine POST-Anfrage eine PDF-Datei zu meinem WebAPI-Controller sende mit Angular als solche:Azure Blob Storage - Hochladen Http/StreamContent zu einem CloudBlockBlob von WebAPI-Controller
$scope.upload = Upload.upload({
url: "../api/Locker/Upload", // webapi url
method: "POST",
file: controllerFile,
})
das in meiner POST-Methode auf meinem Controller erhalte ich die StreamContent dieser Datei wie folgt:
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];
}
es sagt, dass results.Contents [0] vom Typ HttpContent aber in dem Direkt-Fenster, wenn ich filedata geben sie sagt, es von StreamContent Typ ist.
Ich versuche, diese fileData auf Azure Blob Storage hochzuladen, damit ich sie später mit einer GET-Anfrage abrufen kann, habe aber Probleme damit.
//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);
und Verfahren, wo ich stecke:
private async void UploadToBlob(CloudBlobContainer container, string blobId, HttpContent fileData)
{
CloudBlockBlob block = container.GetBlockBlobReference(blobId);
block.UploadFromStream(fileData);
}
Fehler auf block.UploadFromStream weil filedata kein Strom natürlich ist.
Was kann ich tun, wenn ich eine HTTP-Antwort mit Inhalt Wesen vom Typ erwarten: Arraybuffer, so dass ich die Datei in meiner Web-Anwendung belichten kann, wie:
//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);
}