Télécharger S3 Fichiers avec Boto
Je suis en train de mettre en place une application où les utilisateurs peuvent télécharger leurs fichiers stockés dans un compartiment S3. Je suis capable de mettre en place mon seau, et d'obtenir le bon fichier, mais il ne télécharge pas, ce qui me donne cette erreur: No such file or directory: 'media/user_1/imageName.jpg'
Aucune idée pourquoi? Cela semble relativement facile de problème, mais je n'arrive pas à sembler obtenir. Je peux supprimer une image correctement, de sorte qu'il est en mesure d'identifier l'image correcte.
Voici mon 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/")
astuce: puisque vous êtes à l'aide de django, vous pouvez utiliser django-entrepôts ce sera plus facile
peut-être que vous devriez utiliser boto3 download_file
peut-être que vous devriez utiliser boto3 download_file
OriginalL'auteur pepper5319 | 2016-05-25
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous téléchargez sur un répertoire local qui n'existe pas (
media/user1
). Vous devez soit:/
) avec un autre caractère, ce sera d'assurer l'unicité de nom de fichier sans avoir à créer des répertoiresLa dernière option pourrait être atteint grâce à:
Voir aussi: Boto3 de télécharger tous les fichiers à partir d'un compartiment S3
J'ai ajouté un exemple de code.
Cette réponse devrait avoir plus de place de vote. la plus simple solution de
Vous pouvez utiliser
os.makedirs()
pour créer un répertoire, y compris ses répertoires parents si nécessaire.OriginalL'auteur John Rotenstein
Le téléchargement de fichiers à l'aide de boto3 est très simple, configurer vos informations d'identification AWS au niveau du système avant d'utiliser ce code.
remplacer est de localiser le fichier dans votre local avec s3 nom de fichier, si vous ne remplacez pas, il faudra essayer d'enregistrer sous "test/abc.txt'.
OriginalL'auteur Srinivas Rampelli