Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过内存中的图像文件填写Jinja2模板中的文件输入_Python_Html_Flask_Jinja2 - Fatal编程技术网

Python 如何通过内存中的图像文件填写Jinja2模板中的文件输入

Python 如何通过内存中的图像文件填写Jinja2模板中的文件输入,python,html,flask,jinja2,Python,Html,Flask,Jinja2,我正在使用Jinja2模板编写一个flask服务器。在表单中,我有一个文件字段,允许用户上传图像 当表单验证失败时,同一表单将显示一条闪烁消息。我希望表单中填充旧值,尤其是用户上传的图像。不过,我不知道如何做到这一点 python发送到Jinja2模板的对象类似于 <FileStorage: 'launch-image-3.5@2x.png' ('image/png')> 我使用宏呈现文件输入,如下所示(我使用引导4): {%macro file\上传程序(文件名、url\名称

我正在使用Jinja2模板编写一个flask服务器。在表单中,我有一个文件字段,允许用户上传图像

当表单验证失败时,同一表单将显示一条闪烁消息。我希望表单中填充旧值,尤其是用户上传的图像。不过,我不知道如何做到这一点

python发送到Jinja2模板的对象类似于

<FileStorage: 'launch-image-3.5@2x.png' ('image/png')>

我使用宏呈现文件输入,如下所示(我使用引导4):

{%macro file\上传程序(文件名、url\名称、标题、url)%}
{{title}}

$(“{{file{u name}}”).on(“change”,函数(){ $(“{{url{u name}}”).val(“”); var输入=此; if(input.files&&input.files[0]){ var reader=new FileReader(); reader.onload=函数(e){ var preview=$(“{{file_name}}-preview”); preview.attr(“src”,即target.result); preview.show(); }; reader.readAsDataURL(input.files[0]); } }); {%endmacro%}
只要用户通过单击输入上传图像,图像预览就会显示在
img
标签中

我的问题是,如何通过编程将图像设置为文件输入,从而触发
img
标记以显示预览,当用户单击提交按钮时,相同的图像将再次发送到表单中的服务器


顺便说一句,我的表单是一个
多部分/表单数据
表单。

不能这样做。出于良好的安全原因,浏览器根本不允许您使用;显然,如果您可以预先填充文件输入,恶意网页可能会将其设置为指向客户端磁盘上的机密数据,例如passwd文件。

我认为询问者正在谈论使用服务器内存中的图片初始化表单。我不知道这是否可行,但这不是一个安全风险。正如@bgschiller所说,网页是从我的服务器返回的,而我要填充到服务器内存中的文件。这仍然是个问题吗?
{% macro file_uploader(file_name, url_name, title, url) %}

<fieldset class="form-group">
    <strong>{{ title }}</strong>
    <br/>
    <label class="file">
        <input type="file" class="form-control-file" id="{{ file_name }}" name="{{ file_name }}">
        <span class="file-custom"></span>
    </label>
    <input type="text" class="form-control" id="{{ url_name }}" name="{{ url_name }}" placeholder="{{ title }} URL"
           value="{{ url or '' }}">
    <img id="{{ file_name }}-preview" class="img-thumbnail" src="{{ url or '' }}"
         style="margin-top: 8px; max-width: 50%; display: none;">
</fieldset>

<script>
    $("#{{ file_name }}").on("change", function () {
        $("#{{ url_name }}").val("");
        var input = this;

        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                var preview = $("#{{ file_name }}-preview");
                preview.attr("src", e.target.result);
                preview.show();
            };
            reader.readAsDataURL(input.files[0]);
        }
    });
</script>
{% endmacro %}