从 IMG 标签到文件输入



我有一个带有base64 url作为src的图像。我想使用输入文件(带有表单(将此图像发送到服务器。因此,我需要将 img 标签转换为输入文件。

我正在使用插件裁剪图像。然后,结果写入 img 标记中。

我试图将 img 标签转换为文件。但是我不知道如何将文件转换为输入文件。

<div>
    <label for="img">Image</label><input type="file" name="img" id="img" value=""/>
</div>
<div>
    <img id="outImg" />
    <input type="file" name="imgtbn" id="imgtbn" value=""/>
</div>

 document.getElementById('img').onchange = function (evt) {
    var output = document.getElementById('outImg');
    output.src = URL.createObjectURL(evt.target.files[0]);

    if(this.c!=undefined)
    {
        this.c.destroy();
    }
    var el = document.getElementById('outImg');
    this.c = new Croppie(el, {
        viewport: { width: 300, height: 300 },
        boundary: { width: 900, height: 300 },
        showZoomer: false,
        enableOrientation: true,
        update: function (data) {
            this.result('base64').then(function(dataImg) {
                $('#imgCropped').attr('src', dataImg);
                img = document.getElementById('imgCropped');
                fetch(img.src)
                    .then(res => res.blob())
                    .then(blob => {
                        file = new File([blob], 'file', blob)
                        document.getElementById('imgtbn').file = file;
                    });
            })
        }
    });
};

我想要一个充满裁剪图像的输入文件。

谢谢你的时间。

你不能。您不仅可以在文件标签中使用base64,而只能使用实际文件,而且您甚至根本无法在Javascript中设置文件输入的值。这是一个安全问题。

但是你为什么要这样做呢?如果您已经将文件编码为 base64,则任何文本输入都可以将其发送到服务器。我可能会使用 因为显示代码没有意义。如果您想要预览,请使用 img 标签。

正如Amunium所说,文件输入是只读的。

将 base64 图像保存到隐藏输入是最好的方法。

可以通过编程方式清空文件输入值,但它们仍将提交;尽管为空。

关于

如何以简单的方式完成此操作,有一个准系统解释。

相关内容

  • 没有找到相关文章

最新更新