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,47 МБ. Файл docx загружается без проблем, это то, что создает ошибку.
Я нашел только два предмета, которые пытаются объяснить, что происходит, и я действительно не могу сделать из них головы или хвосты. Item 1Item 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);
}
ОТВЕТИЛ: Проблема была в моей строке подключения хранения я был выбран, чтобы использовать HTTP-соединения вместо HTTPS (рекомендуется по причине). Я не уверен, что это связано с буферизацией, чтобы добиться успеха, но она решила проблему, и теперь я могу хранить загруженные файлы в хранилище blob.