Azure Block Blob存储文件上传奇怪的问题

时间:2015-05-03 22:24:58

标签: azure azure-storage azure-storage-blobs

我'使用Azure Block Blob Storage来保存我的文件。这是我上传文件的代码。

我在同一个请求中为同一个文件调用了两次以下的方法; 该方法的第一次调用按预期保存文件,但第二次调用将文件保存为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"

有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:4)

您需要将流的位置重置为开头。将此行放在UploadFile方法的顶部。