Azure 块 blob 存储连续上传相同文件失败
Azure block-blob storage uploading same file in succession fails
我正在使用 Azure 块 Blob 存储来保存我的文件。这是我上传文件的代码。
我正在为同一个请求中的同一个文件调用两次方法,如下所示;
该方法的第一次调用按预期保存文件,但第二次调用将文件保存为长度为 0,因此我无法显示图像并且没有发生错误。
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
UploadFile(file);
UploadFile(file);
return View();
}
public static string UploadFile(HttpPostedFileBase file){
var credentials = new StorageCredentials("accountName", "key");
var storageAccount = new CloudStorageAccount(credentials, true);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
container.CreateIfNotExists();
var containerPermissions = new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
};
container.SetPermissions(containerPermissions);
var blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString());
blockBlob.Properties.ContentType = file.ContentType;
var azureFileUrl = string.Format("{0}", blockBlob.Uri.AbsoluteUri);
try
{
blockBlob.UploadFromStream(file.InputStream);
}
catch (StorageException ex)
{
throw;
}
return azureFileUrl ;
}
我只是找到了下面的解决方案,它和我的一样奇怪,但没有帮助。
Strange Sudden Error "The number of bytes to be written is greater than the specified ContentLength"
有什么想法吗?
谢谢
您需要将流的位置重置回开头。将此行放在 UploadFile 方法的顶部。
file.InputStream.Seek(0, SeekOrigin.Begin);
我正在使用 Azure 块 Blob 存储来保存我的文件。这是我上传文件的代码。
我正在为同一个请求中的同一个文件调用两次方法,如下所示; 该方法的第一次调用按预期保存文件,但第二次调用将文件保存为长度为 0,因此我无法显示图像并且没有发生错误。
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
UploadFile(file);
UploadFile(file);
return View();
}
public static string UploadFile(HttpPostedFileBase file){
var credentials = new StorageCredentials("accountName", "key");
var storageAccount = new CloudStorageAccount(credentials, true);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("images");
container.CreateIfNotExists();
var containerPermissions = new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
};
container.SetPermissions(containerPermissions);
var blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString());
blockBlob.Properties.ContentType = file.ContentType;
var azureFileUrl = string.Format("{0}", blockBlob.Uri.AbsoluteUri);
try
{
blockBlob.UploadFromStream(file.InputStream);
}
catch (StorageException ex)
{
throw;
}
return azureFileUrl ;
}
我只是找到了下面的解决方案,它和我的一样奇怪,但没有帮助。
Strange Sudden Error "The number of bytes to be written is greater than the specified ContentLength"
有什么想法吗? 谢谢
您需要将流的位置重置回开头。将此行放在 UploadFile 方法的顶部。
file.InputStream.Seek(0, SeekOrigin.Begin);