使用Boto下载S3文件

pep*_*319 6 python amazon-s3 boto amazon-web-services

我正在尝试设置一个应用程序,用户可以下载存储在S3 Bucket中的文件.我能够设置我的存储桶,并获取正确的文件,但它不会下载,给我这个错误: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/")
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 11

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

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

最后一个选项可通过以下方式实现:

k.get_contents_to_filename(str(k.key).replace('/', '_'))
Run Code Online (Sandbox Code Playgroud)

另请参阅:Boto3从S3存储桶下载所有文件