【问题标题】:How to save S3 file locally under same filename but different path如何以相同的文件名但不同的路径在本地保存 S3 文件
【发布时间】:2019-11-21 15:10:30
【问题描述】:

我正在使用 .Net Core 3.0 从 S3 存储桶下载一些文件。

bucket的结构如下:

my_folder
prod
    year
        month
            day
                hour
                    minute
                        - joe
                        - jack
                        - john
                        - jacob

我创建了一个循环,可以成功下载最后十分钟的文件:

foreach(string objectKey in getObjectKeyNames(dispatch))
{
    request1.Key = objectKey;
    try
    {
        using (GetObjectResponse response1 = await s3Client.GetObjectAsync(request1))
        {
            CancellationTokenSource source = new CancellationTokenSource();
            CancellationToken token = source.Token;
            await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);
        }
    }
    catch(Exception e)
    {
        Console.WriteLine("error");
    }
}

我遇到的问题是:

await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);

这会在 c:temp 中创建与上图相同的结构,而我只想下载所有文件,因为每个文件名在 c:temp 中都是唯一的。所以要清楚,我只想要 C:temp 中的所有文件,而不需要文件夹结构。

objectKey 是文件名,格式如下

my_folder/prod/2019/11/21/13/26/2019_11_21_13_26_joe.json

文件名是 2019_11_21_13_26_joe.json

希望这是有道理的

【问题讨论】:

    标签: amazon-s3 .net-core


    【解决方案1】:

    查看Get a file name from a path in C#。具体来说,Path.getFileName()

    objectKey = Path.getFileName(objectKey);
    await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多