如何将InMemoryUploadedFile对象复制到磁盘

我试图捕获与表单一起发送的文件,并在对其进行保存之前对其执行一些操作。因此,我需要在temp目录中创建此文件的副本,但是我不知道如何到达它。Shutil的功能无法复制此文件,因为没有路径。那么,是否有其他方法可以执行此操作?

我的代码:

    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)

引起:

Exception Type: IOError at /

Exception Value: (2, 'No such file or directory')

和调试:

#  (..)\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'

回答:

这是类似的问题,可能会有所帮助。

import os

from django.core.files.storage import default_storage

from django.core.files.base import ContentFile

from django.conf import settings

data = request.FILES['image'] # or self.files['image'] in your form

path = default_storage.save('tmp/somename.mp3', ContentFile(data.read()))

tmp_file = os.path.join(settings.MEDIA_ROOT, path)

以上是 如何将InMemoryUploadedFile对象复制到磁盘 的全部内容, 来源链接: utcz.com/qa/433871.html

回到顶部