Estoy intentando capturar un archivo enviado con el formulario y realizar algunas operaciones antes de que se guarde. Entonces necesito crear una copia de este archivo en el directorio temporal, pero no sé cómo llegar a él. Las funciones de Shutil no pueden copiar este archivo, ya que no hay una ruta hacia él. Entonces, ¿hay alguna manera de hacer esta operación de otra manera?Cómo copiar el objeto InMemoryUploadedFile al disco
Mi código:
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)
Lo que plantea:
Exception Type: IOError at /
Exception Value: (2, 'No such file or directory')
Y la depuración:
# (..)\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, creo que codificado el "tmp/name.mp3" será un problema en la ruta de plataforma cruzada, trato de mejorar su código
–No me gusta aquí ** data.read() ** –
@ sube lo que está mal con data.read() ?? –