gpt4 book ai didi

python - 如何将 InMemoryUploadedFile 对象复制到磁盘

转载 作者:IT老高 更新时间:2023-10-28 21:44:39 26 4
gpt4 key购买 nike

我正在 try catch 与表单一起发送的文件并在保存之前对其执行一些操作。所以我需要在临时目录中创建这个文件的副本,但我不知道如何访问它。 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 /<br/>
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'

最佳答案

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

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)

关于python - 如何将 InMemoryUploadedFile 对象复制到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com