使用HTML5的FileReader对象批量将多个图片转化成base64格式

373 阅读1分钟

注:相关链接《10分钟教会你原生JS压缩图片,极其精简版》

什么是base64格式?说到底就是一串字符串,形如data:image/png;base64,iVBORwO…开头的字符串
原本在网页中嵌入一个图片是这样的 <img src="photo.png">
使用了base64格式后变成<img src="data:image/png;base64,iVBORw0...">
所以,通过FileReader对象就可以把图片变成base64格式,内嵌至网页中,这样就可以减少对服务器的请求,不过网页体积变大,这个方法适用于嵌入小张图片

(uploadFile) => {
                const newFiles = [];
                let fileLength = 0;
                const reader = new FileReader();
                reader.readAsDataURL(uploadFile[fileLength]);
                reader.onabort = function() {
                  console.log('文件读取异常' + uploadFile[fileLength].name);
                };
                reader.onerror = function() {
                  console.log('文件读取出现错误' + uploadFile[fileLength].name);
                };
                reader.onload = function(e) {
                  // console.log(e);
                  if (e.target.result) {
                    newFiles.push(e.target.result);
                    // console.log('完成' + uploadFile[fileLength].name);
                    fileLength++;
                    if (fileLength < uploadFile.length) {
                      reader.readAsDataURL(uploadFile[fileLength]);
                    } else {
                      console.log('遍历完毕');
                    }
                  }
                };
                return new Promise(resolve => {
                  setTimeout(() => {
                    resolve(newFiles);
                  }, 1000);
                });
              },