我想创建一个逻辑应用程序,该应用程序列出我的azure文件存储中的所有文件,然后将它们复制到SFTP服务器。我已经设置了以下流程 1.列出文件存储中的文件 2.获取文件的元数据 3.获取文件内容 4.在SFTP上创建文件
对于小于300MB的文件,一切正常,但是当我要复制大于300MB的文件时, “文件包含540.782兆字节,超过了最大300兆字节。”
那么我的问题是否有解决方法或其他解决方案?
答案 0 :(得分:0)
此限制可能会导致它仍然是预览功能,然后我使用blob测试它没有此限制。
所以我想您可以在获取文件名后调用一个函数上传文件yo blob,然后使用blob连接器获取blob内容并上传到ftp服务器。
下面是我的功能代码,在我的测试中,我没有从请求中传递文件名,因此您可以更改它以从请求中获取文件名。
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("storage connection string");
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference("windows");
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
String filename = "Downloads.zip";
CloudFile file = rootDir.GetFileReference(filename);
string fileSas = file.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
// Only read permissions are required for the source file.
Permissions = SharedAccessFilePermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});
Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + fileSas);
var myClient = storageAccount.CreateCloudBlobClient();
var container = myClient.GetContainerReference("test");
var blockBlob= container.GetBlockBlobReference("test.zip");
await blockBlob.StartCopyAsync(fileSasUri);
return (ActionResult)new OkObjectResult($"success");
}
以下是我的测试流程。请注意blob路径,您需要使用此/test/@{body('Get_file_metadata')?['DisplayName']}
对其进行修改。
这是结果图片,从我可以用300MB以上的文件测试的大小来看。