2016-05-25 9 views
4

S3バケットに保存されているファイルをダウンロードできるアプリを設定しようとしています。バケツをセットアップして正しいファイルを取得できますが、ダウンロードしないので、私にこのエラーが表示されます:No such file or directory: 'media/user_1/imageName.jpg'何故でしょうか?これは比較的簡単な問題のようですが、私はそれを得ることはできません。画像を正しく削除できるので、正しい画像を識別することができます。BotoでS3ファイルをダウンロード

は、ここでの問題は、あなたが(media/user1)が存在しないローカルディレクトリにダウンロードしているということである私の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/") 
+0

クイックヒントを:あなたはジャンゴを使用しているので、あなたは[ジャンゴ-ストレージ]を使用することができます(http://django-storages.readthedocs.io/en/latest/)それが簡単になります – pleasedontbelong

+0

多分あなたはboto3 download_fileを使うべきです – mootmoot

答えて

9

です。あなたはどちらかを行う必要があります。

  • ただ完全なパスを使用して、ファイル名ではなくフルパス
  • を使用していますが、別の文字にスラッシュ(/)を交換
  • 最初のローカルマシン上のディレクトリを作成します - これは、ディレクトリ

最後のオプションを作成することなく、ファイル名の一意性を保証する介して達成することができます

k.get_contents_to_filename(str(k.key).replace('/', '_')) 

も参照してください:Boto3 to download all files from a S3 Bucket

+0

私は簡単な例を教えてください。私はBotoとAWSが比較的新しいです。もしそうでなければ、それはまあまあです。 – pepper5319

+0

サンプルコードをいくつか追加しました。 –

+0

この回答は投票以上にあるはずです。最も簡単な解決策 – roshan

関連する問題