流码
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count == 1)
{
HttpPostedFile file = httpRequest.Files[0];
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(BaseService.BlobConnection));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(documentType.Description);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
blockBlob.Properties.ContentType = file.ContentType;
blockBlob.UploadFromStream(file.InputStream, file.ContentLength);
}
我使用两个文件进行测试,第一个是docx文件,只有12.3KB,pdf是1.47MB。 docx文件上传没有问题,pdf是产生错误的原因。
我只找到了两个试图解释发生了什么的事情,我真的不能用它们做出正面或反面。 Item 1& Item 2
我能够使用以下代码,使用字节数据上传而不会出现错误,但是当我尝试下载任一文件时,它们都已损坏。
var httpRequest = HttpContext.Current.Request;
if (httpRequest.Files.Count == 1)
{
HttpPostedFile file = httpRequest.Files[0];
byte[] buffer = null;
using (var binaryReader = new BinaryReader(file.InputStream))
{ buffer = binaryReader.ReadBytes(file.ContentLength); }
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(BaseService.BlobConnection));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(documentType.Description);
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
blockBlob.Properties.ContentType = file.ContentType;
blockBlob.UploadFromByteArray(buffer, 0, file.ContentLength);
}
ANSWERED: 问题出在我的存储连接字符串中,我选择使用HTTP连接而不是HTTPS(出于某种原因推荐使用它)。我不确定与缓冲成功有什么关系,但它解决了这个问题,我现在能够将上传的文件存储到blob存储中。
答案 0 :(得分:2)
问题出在我的存储连接字符串中,我选择使用HTTP连接而不是HTTPS(出于某种原因推荐使用它)。我不确定与缓冲成功有什么关系,但它解决了问题,我现在能够将上传的文件存储到blob存储中。