好吧,我试过关于一切,我无法得到这个工作。以编程方式将图像保存到Django ImageField
- 我有一个ImageField的一个Django模型上它
- 我有下载经由HTTP(测试和工程)
- 的图像被直接保存到“upload_to”文件夹(upload_to图像代码是被在ImageField字段设置的一个)
- 所有我需要做的是已经存在的映像文件的路径与ImageField的
我写这个代码大约6种不同的方式联系起来。
我遇到的问题是我写的所有代码都会导致以下行为: (1)Django将创建第二个文件,(2)重命名新文件,将_添加到文件名的末尾,然后(3)不传输任何数据,而是基本上保留一个空的重命名文件。 'upload_to'路径中剩下的是2个文件,一个是实际的图像,另一个是图像的名称,但是是空的,当然,ImageField路径被设置为Django试图创建的空文件。
在这种不清楚的情况下,我会尽力来说明:
## Image generation code runs....
/Upload
generated_image.jpg 4kb
## Attempt to set the ImageField path...
/Upload
generated_image.jpg 4kb
generated_image_.jpg 0kb
ImageField.Path = /Upload/generated_image_.jpg
我怎么能做到这一点,而无需Django的尝试重新存储文件?我真的很喜欢这样的效果...
model.ImageField.path = generated_image_path
...但当然,这是行不通的。
是的,我已经经历了其他问题了这里就像this one以及Django的文档上File
UPDATE 进一步测试后,在Windows Server上的Apache下运行时,它只做这种行为。当在XP的'runserver'下运行时,它不会执行这种行为。
我很难过。
这里是一个成功的运行在XP代码...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()
另一个伟大的Django问题。我已经多次尝试解决这个问题,但没有运气。上传目录中创建的文件被破坏,并且与原件相比只有一小部分(存储在其他地方)。 – westmark 2009-10-08 20:48:59
你的更新不起作用 – AmiNadimi 2017-07-15 11:16:24