Azure Storage Blob文件重命名
Azure Storage的SDK并没有提供文件重命名的方法,而且从StorageExplorer管理工具里操作修改文件名的时候也有明确提示:
是通过复制当前文件并命名为新文件名再删除旧文件,不保存快照信息,而且在重命名大文件的时候可能会花费较长时间。
官方的管理工具都没有直接重命名的方法,因此得知Storage的设计机制暂不支持文件直接重命名,但我们也可以从管理工具的提示语中得到解决方案,就是先复制文件到新文件名再删除旧文件,虽然这相当令人费解。。。但也是没有办法的办法,而且笔者查找的来的方法都是如此。。。
http://stackoverflow.com/questions/3734672/azure-storage-blob-rename
http://stackoverflow.com/questions/16121503/cant-rename-blob-file-in-azure-storage
目前Storage没有支持,那我们也只好这样处理了,具体代码如下:
1 /// <summary> 2 /// 文件重命名 3 /// <para>Azure不支持直接重命名,需要将文件复制为新文件,再删除旧文件</para> 4 /// </summary> 5 /// <param name="fileOldName">旧文件名(需包含拓展名)e.g. old.jpg </param> 6 /// <param name="fileNewName">新文件名(需包含拓展名)e.g. new.jpg</param> 7 /// <returns></returns> 8 public bool RenameFile(string fileOldName, string fileNewName) 9 { 10 var blobOld = this.Container.GetBlockBlobReference(fileOldName); 11 var blobNew = this.Container.GetBlockBlobReference(fileNewName); 12 if (!blobOld.Exists()) 13 { 14 //文件不存在 15 return false; 16 } 17 blobNew.StartCopyFromBlob(blobOld); 18 blobOld.DeleteIfExists(); 19 return true; 20 }