从 <InMemoryUploadedFile> Django 对象中定位文件路径

3 投票
2 回答
9463 浏览
提问于 2025-04-15 22:15

我有一个Django应用,当我提交一个包裹时,它应该返回包裹里面的值。

我把表单提交到一个叫“insert”的视图:

request.FILES['file']

这个视图返回的是文件对象,但它的类型是< InMemoryUploadedFile>。

我需要的是一个方法,能够获取上传文件的绝对路径,这样我就可以把这个路径传给一个方法,来获取我需要的值。

有没有人知道我该怎么做?

谢谢!

2 个回答

1

Daniel Roseman在这个上下文中是对的。但是,如果你已经通过 .create(...)obj.save() 方法把对象创建或插入到数据库里,那么你可以通过 obj.<field_name>.name 来获取图片的路径。

举个例子:

假设你有一个包含图片字段的模型。

my_image = models.ImageFiled(upload_to='my_upload_dir')

所以,

obj = ImageModel.objects.create(image=request.FILES['image']) # let's insert it to db
image_path = obj.image.name

# will return 
'my_upload_dir/myimagename.jpg'
14

当然,"InMemory"这个名字就说明了这个文件只存在于内存中,所以它是没有路径的,对吧?

撰写回答