Comment faire pour copier InMemoryUploadedFile objet sur le disque

Je suis en train d'essayer d'attraper un fichier envoyé avec le formulaire et effectuer des opérations, avant d'être sauvé. J'ai donc besoin de créer une copie de ce fichier dans le répertoire temp, mais je ne sais pas comment l'atteindre. Shutil fonctions ne parviennent pas à copier ce fichier, car il n'y a pas de chemin vers elle. Donc, il y a un moyen de faire cette opération dans une autre façon ?

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)

Qui soulève :

Exception Type: IOError at /
Exception Value: (2, 'No such file or directory')

Et le debug :

#  (..)\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'
InformationsquelleAutor owca | 2010-09-13