便民 发表于 2017-6-30 08:59:29

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没有支持,那我们也只好这样处理了,具体代码如下:



         /// <summary>
         /// 文件重命名
         /// <para>Azure不支持直接重命名,需要将文件复制为新文件,再删除旧文件</para>
         /// </summary>
         /// <param name="fileOldName">旧文件名(需包含拓展名)e.g. old.jpg </param>
         /// <param name="fileNewName">新文件名(需包含拓展名)e.g. new.jpg</param>
         /// <returns></returns>
         public bool RenameFile(string fileOldName, string fileNewName)
         {
             var blobOld = this.Container.GetBlockBlobReference(fileOldName);
             var blobNew = this.Container.GetBlockBlobReference(fileNewName);
             if (!blobOld.Exists())
             {
               //文件不存在
               return false;
             }
             blobNew.StartCopyFromBlob(blobOld);
             blobOld.DeleteIfExists();
             return true;
         }
页: [1]
查看完整版本: Azure Storage Blob文件重命名