python - 使用 Boto 下载 S3 文件

标签 python amazon-web-services amazon-s3 boto

我正在尝试设置一个应用程序,用户可以在其中下载存储在 S3 存储桶中的文件。我能够设置我的存储桶,并获得正确的文件,但它不会下载,给我这个错误:No such file or directory: 'media/user_1/imageName.jpg'知道为什么吗?这似乎是一个相对容易的问题,但我似乎不太明白。我可以正确删除图像,因此能够识别正确的图像。

这是我的 views.py

def download(request, project_id=None):
    conn = S3Connection('AWS_BUCKET_KEY', 'AWS_SECRET_KEY')
    b = Bucket(conn, 'BUCKET_NAME')
    k = Key(b)
    instance = get_object_or_404(Project, id=project_id)
    k.key = 'media/'+str(instance.image)
    k.get_contents_to_filename(str(k.key))
    return redirect("/dashboard/")

最佳答案

问题是您正在下载到 不存在的本地目录 ( media/user1 )。您需要:

  • 先在本地机器上创建目录
  • 只需使用文件名而不是完整路径
  • 使用完整路径,但用另一个字符替换斜杠( / )——这将确保文件名的唯一性,而无需创建目录

  • 最后一个选项可以通过以下方式实现:
    k.get_contents_to_filename(str(k.key).replace('/', '_'))
    

    另见:Boto3 to download all files from a S3 Bucket

    关于python - 使用 Boto 下载 S3 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442444/

    相关文章:

    Python,函数中的嵌套循环break - pass - continue - return

    python - 如何在python中读取动态生成的文件并建立索引

    python套接字不在windows中发送数据

    amazon-web-services - 无法在 Athena 中删除分区

    amazon-web-services - AWS MWAA Cloudformation 堆栈创建失败并出现 NotStabilized

    node.js - 将视频文件上传到 Amazon S3 时出现 413 Request Entity Too Large

    amazon-web-services - 如何修复在 aws 中列出来自 s3 存储桶的内容的关键错误?

    python - 使用 Python 删除字符串中的 HTML 标签的最佳方法是什么?

    amazon-web-services - AWS S3 上传完整性

    ios - 如何修复 AWSCore (AWS-sdk-ios) 中的 [AWSTask 异常] 崩溃