我正在使用Django 1.7和Python 3.4。Django从ImageField下载图像
我有这样一个模型:
class ImageModel(models.Model):
image = models.ImageField(verbose_name='image', upload_to='uploaded_images/')
现在我要下载的文件保存在/静态/ uploaded_images /图像。 例如我有这样的链接:www.example.com/image/download/1
,其中1是ImageModel对象的id。
现在我有一个观点:
def download_image(request, image_id):
img = ImageModel.objects.get(id=image_id)
(what I need to do?)
下一步是什么?如何创建一个强制下载该图像的视图?
请注意,如果名称在ASCII范围内,但使用宽字符失败时会失败。 Content-Disposition支持UTF-8编码名称,但旧版浏览器(IE8之前)将完全忽略它。在内部,它更好地隐藏重定向到URL中具有文件名的URL。所有的浏览器都会支持这一点,你将避免IE浏览器附加的错误[1]错误,以避免出现文件名错误 – 2014-10-26 20:49:23
@MikeMcMahon我不完全确定你想要解释什么,但我很乐意学习任何其他方式来做到这一点,如果它更好。你能给一些关于这方面的信息的链接吗? – AlvaroAV 2014-10-26 20:51:02
考虑使用汉字字符或西里尔文字符的文件名。 'filename =%s'将不起作用。它可以在FireFox/Chrome中使用,但不能在IE8以及可能的移动浏览器上使用(取决于使用哪种移动设备和浏览器技术)。有一个'filename * = UTF-8''%s'格式,它支持UTF-8编码的字符,这有时会*有效*。最好(从DJango内部)执行HttpRedirect()到包含完整文件名的URL作为路径的一部分。所有的浏览器都可以解释这个和标准范围之外的字符。 – 2014-10-26 20:54:32