javascript - 从 IMG 标签到文件输入

标签 javascript croppie

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

我正在使用插件 Croppie 来裁剪图像。然后,将结果写入 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,则任何文本输入都可以将其发送到服务器。我可能会使用 <input type="hidden"> 因为显示代码没有意义。如果您想要预览,请使用 img 标签。

关于javascript - 从 IMG 标签到文件输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55314772/

相关文章:

javascript - 一个表单可以有多个 onsubmit() 吗?

javascript - 在 Rails 上的 Ruby 方法中使用 JSON 输入

javascript - 为什么此功能附加到全局上下文

javascript - 我确定代码是正确的但不起作用? JavaScript、Croppie JS、PHP、jQuery

javascript - 根据其他表单的值更改复选框的值

javascript - JQuery 设置 Bootstrap 选择器的预选值

php - 如何使用 storeas method() 在 laravel 中存储 base64 编码的图像?

jquery - Croppie 在 Jquery Fancybox 弹出模式中不起作用

javascript - 如何销毁 Croppie jQuery 现有实例?