将文件上载到CloudBlockBlob时的访问问题 - Windows Azure

xmo*_*era 2 azure azure-storage

我不得不从Windows Azure 1.7升级到2.1.我所拥有的代码中唯一的变化

blob.UploadFromFile(tempImage); to blob.UploadFromFile(tempImage,FileMode.CreateNew);

但是我收到以下错误:"将FileMode:CreateNew与FileAccess结合使用:读取无效."

这是我下面的代码(我添加了"blob.OpenWrite();"只是为了尝试).任何想法为什么我收到此错误?

  string blobUri;

        /*var acct = CloudStorageAccount.FromConfigurationSetting("ImagesConnectionString");*/

        var setting = CloudConfigurationManager.GetSetting("ImagesConnectionString");
         var acct = CloudStorageAccount.Parse(setting);

        var blobClient = acct.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue("ContainerName")); //.GetContainerReference("ContainerName");
        container.CreateIfNotExists(); //CreateIfNotExist

        var perms = container.GetPermissions();

        //upload blob image
        LocalResource local = RoleEnvironment.GetLocalResource("tempImages");
        string tempSlideImage = local.RootPath + mySlideName;
        myImage.Save(tempSlideImage);            

        CloudBlockBlob blob = container.GetBlockBlobReference(myImageName);
        blob.Properties.ContentType = "image/jpeg"; //photoToLoad.PostedFile.ContentType; //blob.Properties.ContentType = photoToLoad.PostedFile.ContentType;

        blobClient.ParallelOperationThreadCount = 3;
        blob.OpenWrite(); //this was added after the migration
        blob.UploadFromFile(tempImage,FileMode.CreateNew); //.UploadFile //blob.UploadFromStream(photoToLoad.FileContent);
        blobUri = blob.Uri.ToString();
Run Code Online (Sandbox Code Playgroud)

kwi*_*ill 16

UploadFromFile(FileMode)的第二个参数是指您希望如何在本地计算机上打开文件,而不是您想要在Azure存储中使用blob做什么.所以要修复你可以:

更改

blob.UploadFromFile(tempImage,FileMode.CreateNew); 
Run Code Online (Sandbox Code Playgroud)

blob.UploadFromFile(tempImage,FileMode.Open); 
Run Code Online (Sandbox Code Playgroud)

另外,什么是tempImage?你要么省略了代码的那部分,要么它应该是tempSlideImage.