Django生成条形码并通过浏览器下载

Django generate bar code and download via browser

我可以使用这个库生成条形码并将图像文件保存在根文件夹中 python-barcode。 现在我正在尝试生成条形码图像并通过浏览器下载为 HttpResponse

这是我的试用版,

import barcode

from django.http import HttpResponse

def download_bar_code(request):
    ean = barcode.get('upc', '123456789102', writer=ImageWriter())
    ean.save('filename')
    image = ean.render() # Returns PIL image class
    # <PIL.Image.Image image mode=RGB size=523x280 at 0x7FAE2B471320>
    return HttpResponse(image, content_type="image/png")

这里图片文件是保存在根目录下的,不是通过浏览器下载的。 我找不到解决这个问题的方法,请您给我建议一些解决方法来解决这个问题,我将不胜感激。提前致谢。

你可以这样做

response = HttpResponse(mimetype="image/png")
image.save(response, "PNG")
return response

响应是类似于文件的流,因此您可以写入它而不是将其保存到文件。

此外,我认为您可以跳过 ean.save('filename'),但我不能 100% 确定,因为我从未使用过该库。

你可以试试:

from django.http import HttpResponse

def home(req):
    response = HttpResponse(image, content_type="image/png")
    response['Content-Disposition'] = 'inline; filename=file_name.png'
    return response