我正在使用typescript开发angular 2应用程序。在我目前的项目中,我实现了将图像上传到azure存储区的功能,为此,我遵循下面的链接。使用typescript和angular2将图像上传到存储blob
http://www.ojdevelops.com/2016/05/end-to-end-image-upload-with-azure.html
我写的代码下面的线我认为从我的本地机器选择图像。
<form name="form" method="post">
<div class="input-group">
<input id="imagePath" class="form-control" type="file" name="file" accept="image/*" />
<span class="input-group-btn">
<a class="btn btn-success" (click)='uploadImage()'>Upload</a>
<!--href="../UploadImage/upload"-->
<!--(click)='uploadImage()'-->
</span>
</div>
</form>
当我点击上传按钮,在uploadcomponent.ts文件I写的代码的下面行用于与内容作为选择的图像路径沿着使HTTP POST请求。
uploadImage(): void {
//var image = Request["imagePath"];
//alert('Selected Image Path :' + image);
this.imagePathInput = ((<HTMLInputElement>document.getElementById("imagePath")).value);
alert('Selected Image Path :' + this.imagePathInput);
let imagePath = this.imagePathInput;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');//application/x-www-form-urlencoded
this._http.post('/UploadImage/UploadImagetoBlob', JSON.stringify(imagePath),
{
headers: headers
})
.map(res => res.json())
.subscribe(
data => this.saveJwt(data.id_token),
err => this.handleError(err),
() => console.log('ImageUpload Complete')
);
}
UploadImageController.cs
在UploadImageController.cs文件I写下面用于上传的代码行图像分成Azure存储BLOB。
[HttpPost]
[Route("UploadImage/UploadImagetoBlob")]
public async Task<HttpResponseMessage> UploadImagetoBlob()
{
try
{
//WebImage image = new WebImage("~/app/assets/images/AzureAppServiceLogo.png");
//image.Resize(250, 250);
//image.FileName = "AzureAppServiceLogo.png";
//img.Write();
var image = WebImage.GetImageFromRequest();
//WebImage image = new WebImage(imagePath);
var imageBytes = image.GetBytes();
// The parameter to the GetBlockBlobReference method will be the name
// of the image (the blob) as it appears on the storage server.
// You can name it anything you like; in this example, I am just using
// the actual filename of the uploaded image.
var blockBlob = blobContainer.GetBlockBlobReference(image.FileName);
blockBlob.Properties.ContentType = "image/" + image.ImageFormat;
await blockBlob.UploadFromByteArrayAsync(imageBytes, 0, imageBytes.Length);
var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri("../app/upload/uploadimagesuccess.html", UriKind.Relative);
//return Ok();
return response;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
return null;
}
}
在上面的控制器代码中,下面的行代码总是给出空值。
var image = WebImage.GetImageFromRequest();
你能告诉我如何解决上述问题。做了很多的研究,我得到的结果
-Pradeep