将文件上传到 Azure 存储文件共享的脚本

Posted

技术标签:

【中文标题】将文件上传到 Azure 存储文件共享的脚本【英文标题】:Script to upload files to Azure Storage File Share 【发布时间】:2018-08-09 16:33:53 【问题描述】:

情况: 我刚刚创建了一个 Azure 存储文件共享,我想出了如何通过脚本 (C#) 将文件上传到 Azure BLOB 存储。

问题: 我想通过脚本将文件上传到我的 Azure 存储文件共享(不是 BLOB)。我已经安装了 Azure CLI,但问题是我必须先登录 (az login),然后才能执行任何操作。

有没有什么方法可以在不挂载的情况下将文件从基于我的 PC 的文件夹上传到 Azure 存储文件共享 (testuser.file.core.windows.net\test)?

非常感谢。

【问题讨论】:

看看 AzCopy 工具。这是一个在 Windows 和 Linux 上都可用的命令行工具,您可以使用它将文件从本地计算机上传到 Azure 文件共享。 【参考方案1】:

多个是为了实现这一点。如果您唯一的问题是登录部分,那么您可以使用服务主体和证书来自动登录。

例子

az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p ~/mycertfile.pem --tenant contoso.onmicrosoft.com

您可以使用

查看更多选项

az login -h

希望这会有所帮助。

【讨论】:

【参考方案2】:

有没有什么方法可以将文件从基于我的 PC 的文件夹上传到 Azure 存储文件共享 (testuser.file.core.windows.net\test) 而无需挂载?

是的,我们也可以使用 C# 代码将文件上传到 azure 文件存储。请尝试使用以下代码。

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse("storage connection string");
// Create a CloudFileClient object for credentialed access to File storage.
 CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

 // Get a reference to the file share we created previously.
 CloudFileShare share = fileClient.GetShareReference("test");

 share.CreateIfNotExists();

 CloudFile cloudFile = share.GetRootDirectoryReference().GetFileReference("fileName");

 Stream fileStream = File.OpenRead(@"localpath");

 cloudFile.UploadFromStream(fileStream);

【讨论】:

以上是关于将文件上传到 Azure 存储文件共享的脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure 存储文件共享上上传大文件?

将 base64 上传到 azure 文件共享

有关 Azure 文件共享上的新文件的电子邮件通知

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?

当文件上传到 azure 文件共享时,如何添加触发器以将文件从 azure 文件共享移动到 azure blob?

无法将文件上传到 Azure 文件共享