Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Javascript 将base64转换为blob,然后放回输入文件_Javascript - Fatal编程技术网

Javascript 将base64转换为blob,然后放回输入文件

Javascript 将base64转换为blob,然后放回输入文件,javascript,Javascript,我使用下面的代码将base64转换为blob function base64tofile(base64){ var mime = base64.split(';base64,')[0].split('data:')[1]; var base64 = base64.split(';base64,')[1]; mime = mime || ''; var sliceSize = 1024; var byteChars = window.atob(base6

我使用下面的代码将base64转换为blob

function base64tofile(base64){

    var mime = base64.split(';base64,')[0].split('data:')[1];
    var base64 = base64.split(';base64,')[1];

    mime = mime || '';
    var sliceSize = 1024;
    var byteChars = window.atob(base64);
    var byteArrays = [];

    for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) {
        var slice = byteChars.slice(offset, offset + sliceSize);

        var byteNumbers = new Array(slice.length);
        for (var i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
        }

        var byteArray = new Uint8Array(byteNumbers);

        byteArrays.push(byteArray);
    }

    return new Blob(byteArrays, {type: mime});
}
函数base64tofile(base64){
var mime=base64.split(';base64')[0]。split('data:')[1];
var base64=base64.split(';base64')[1];
mime=mime | |'';
var-sliceSize=1024;
var-byteChars=window.atob(base64);
var ByteArray=[];
对于(变量偏移=0,len=byteChars.length;偏移
基本上,我浏览到一个输入文件,然后转换为base64。之后,我有一些图像处理(camanjs、crop等)过程,然后作为输出将是base64,然后转换为blob并使用ajax上传到服务器

是否可以将blob放回输入文件?因此,使用表单我可以在不使用ajax或js的情况下将数据提交到服务器,而只需使用本机表单提交。

更新: 事实上,经过一些研究,它证明是可以做到的!但只有在现代浏览器中。你可以读到它。关于这一点,已经有一个很好的答案

基本上,您可以通过
.files


这是不可能的。html文件输入只能指向计算机上实际存在的文件

无法从脚本设置文件选择器的值-执行以下操作无效:


你为什么不直接提交表格<代码>文件
是一种特定的
Blob
。请参阅@lx1412提交表单将只发送原始图像文件,而不是修改后的图像文件。如上所述,在输入更改时,将图像文件转换为base6,然后使用插件进行一些图像处理,然后输出为base64。我知道了,但您不能在前端修改您的本地图像文件。虽然还很老练。但你为什么要这么做?你不能简单地填充一个FormData并发送它吗?为什么你绝对想使用HTML表单的方法?@lx1412 im使用camanjs,有很多图像处理库,例如fabricjs,可以在前端修改图像供参考
const input = document.querySelector("input[type=file]");
input.value = "foo";