显示上传(图像)文件的最简单方法?

时间:2012-10-05 17:26:55

标签: django django-forms filefield django-file-upload

我正在尝试第一次尝试django文件上传, 我现在需要的是一种向上传的用户显示上传图像(png / jpg)的方法。

无需将其保存在任何地方。

我的views.py: (我正在使用django表格,顺便说一句)

if request.method == 'POST':
    form = UploadFileForm(request.POST, request.FILES)
    if form.is_valid():
        upFile = request.FILES['upFile']
        f={"upFile":upFile}
        return render_to_response('upload2.html', f)

我可以按预期使用,在模板中显示我的文件的名称和大小 {{upFile.name}}和{{upFile.size}}

有没有办法加载它/在渲染模板中直接显示为'InMemoryUploadedFile',而无需保存文件?

1 个答案:

答案 0 :(得分:4)

您可以使用以下方式从图像数据中创建数据URI:

http://djangosnippets.org/snippets/2516/借来的URI创建:

if form.is_valid():
    upFile = request.FILES['upFile']
    data = upFile.read()
    encoded = b64encode(data)
    mime = # the appropriate mimetype here, maybe "image/jpeg"
    mime = mime + ";" if mime else ";"
    f = {"upFile": "data:%sbase64,%s" % (mime, encoded)}
    return render_to_response('upload2.html', f)

然后在模板中使用它:

<img src="{{ upFile }}">