J'essaye d'attraper un fichier envoyé avec le formulaire et d'effectuer quelques opérations dessus avant qu'il ne soit sauvegardé. J'ai donc besoin de créer une copie de ce fichier dans le répertoire temporaire, mais je ne sais pas comment l'atteindre. Les fonctions de Shutil ne parviennent pas à copier ce fichier, car il n'y a pas de chemin. Alors, y a-t-il un moyen de faire cette opération d'une autre manière?Comment copier l'objet InMemoryUploadedFile sur le disque
Mon code:
image = form.cleaned_data['image']
temp = os.path.join(settings.PROJECT_PATH, 'tmp')
sourceFile = image.name # without .name here it wasn't working either
import shutil
shutil.copy(sourceFile, temp)
Ce qui soulève:
Exception Type: IOError at /
Exception Value: (2, 'No such file or directory')
Et le débogage:
# (..)\views.py in function
67. sourceFile = image.name
68. import shutil
69. shutil.copy2(sourceFile, temp) ...
# (..)\Python26\lib\shutil.py in copy2
92. """Copy data and all stat info ("cp -p src dst").
93.
94. The destination may be a directory.
95.
96. """
97. if os.path.isdir(dst):
98. dst = os.path.join(dst, os.path.basename(src))
99. copyfile(src, dst) ...
100. copystat(src, dst)
101.
▼ Local vars
Variable Value
dst
u'(..)\\tmp\\myfile.JPG'
src
u'myfile.JPG'
# (..)\Python26\lib\shutil.py in copyfile
45. """Copy data from src to dst"""
46. if _samefile(src, dst):
47. raise Error, "`%s` and `%s` are the same file" % (src, dst)
48.
49. fsrc = None
50. fdst = None
51. try:
52. fsrc = open(src, 'rb') ...
53. fdst = open(dst, 'wb')
54. copyfileobj(fsrc, fdst)
55. finally:
56. if fdst:
57. fdst.close()
58. if fsrc:
▼ Local vars
Variable Value
dst
u'(..)\\tmp\\myfile.JPG'
fdst
None
fsrc
None
src
u'myfile.JPG'
Hii, je pense codé en dur le "tmp/name.mp3" ce sera un problème dans le chemin multiplateforme, j'essaie d'améliorer votre code
–Je n'aime pas ici ** data.read() ** –
@ ups quel est le problème avec data.read() ?? –