【发布时间】:2018-03-12 11:07:45
【问题描述】:
在 Django 中,我编写了一个表单,您可以在其中上传一张图片。上传图片后,图片被传递给另一个类型为 TemporaryUploadedFile 的方法,在执行该方法后,它会被传递给 HTML 页面。
我想做的是将 TemporaryUploadedFile 显示为 HTML 中的图像。对我来说这听起来很简单,但我无法在 StackOverflow 或 Google 上找到问题的答案:如何在 HTML 中显示 TemporaryUploadedFile 而无需先保存,因此是我的问题。
感谢所有帮助。
编辑 1:
在调试时提供有关代码和变量的更多信息。
input_image = next(iter(request.FILES.values()))
output_b64 = (input_image.content_type, str(base64.b64encode(input_image.read()), 'utf8'))
【问题讨论】:
-
嗯,这很奇怪。图像的大小约为 4 MB,但编码的字符串只有几个字节。我猜
input_image.read()没有读取整个文件,因为它大于 2.5 MB 并且 Django 正在将此文件分成块。你能用一个几百千字节的小图像试试这个,然后告诉我这是否有效。如果这是问题,我可能需要添加另一个答案。 -
我调整了图像的大小,现在它的大小是 116KB。我还尝试了一些来自谷歌的图片。只是为了检查我使用的图像集没有以任何方式损坏。很遗憾,但它没有成功,图像仍然没有显示。我想知道原因可能是什么。
-
嗨,我刚刚使用 Django 2.0、Python 3.6 进行了测试,对我来说一切正常,无论是大小图像,都一样。我不知道为什么它不适合你。但我希望你能弄清楚。一切顺利。
-
感谢您的帮助。我将尝试修复它,至少我现在知道它应该可以工作,因此问题可能出在我的应用程序的其他地方,当我修复它时,我将解决方案发布在这里。
标签: html django python-3.x