PDF ドキュメントを Azure Storage にアップロードしようとすると、特定の URL で BLOB ストレージにアップロードされます。問題は、その URL を使用してブラウザーで PDF ドキュメントを開こうとすると、開かないことです。
ソースの pdf ドキュメントを確認したところ、アップロードされた blob のサイズはそれぞれ 2.8 Mb と 0 Kb です。その BLOB をシステムに保存した後、Adobe Reader を使用して開こうとすると、次のエラーが表示されます。
「Adobe Reader は doc.pdf を開けませんでした。ファイルの種類がサポートされていないか、ファイルが破損しているためです」。
意見:
<% using (Html.BeginForm("GetPdf", "Home", FormMethod.Post, new { enctype = multipart/form-data" })){ %>
<input type="file" id="Document" name="Document" /><br />
<input type="submit" value="Upload" /><br /><%} %>
コントローラ:
// When I upload the pdf document by default am getting below:
// properties[ContentLength(size of document), ContentType(application/pdf),
// FileName(name of the document), InputStream(System.web.HttpInputStream)]
Public Action Result GetPdf(HttpPostedFileBase Document)
{
var inputstream = Document.InputStream;
var filename = Document.FileName;
var doctype=Document.ContentType;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting
("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("documentscontainer");
container.CreateIfNotExists();
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
container.SetPermissions(permissions);
string uniqueBlobName = string.Format("rewhizzdocuments/{0}",filename);
CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName);
blob.Properties.ContentType = doctype;
blob.UploadFromStream(inputstream);
}
同じコード (pdf ドキュメントに使用したコード) を画像のアップロードに適用すると、画像は BLOB ストレージにアップロードされ、BLOB URL を使用して画像を取得できます。
この問題を解決する方法についてのアイデアをいただければ幸いです。