赞
踩
url
,前端直接把这个值插入到 img 的src 里面即可预览一下图片
这个时候就有两种方案了
可以利用 FileReader 把文件转成 base64格式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input id="file1" type="file" value="FileReader.readAsDataURL 方式" multiple> <script> let file1El = document.querySelector('#file1') file1El.addEventListener('change', function (e) { // 可能会上传多个文件 let files = e.target.files console.log('files', files); if (files.length != 0) { loadFiles(files) .then((fileContents) => { console.log(fileContents); // 在所有文件加载完成后,打印包含所有文件内容的数组 fileContents.forEach(f => { let imgEl = document.createElement('img') imgEl.src = f imgEl.style.width = '100px' imgEl.style.height = '200px' document.body.appendChild(imgEl) }) }) .catch((error) => { console.error(error); // 处理错误情况 }); } }) function loadFiles(files) { const promises = [] for (const item of files) { promises.push(readFile(item)) } return Promise.all(promises); } // 利用 promise 封装一个生成 base64的 函数,因为 onload 事件不是同步的,它需要事件处理 function readFile(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (event) => { const result = reader.result; if (typeof result === 'string') { resolve(result); } else { reject(new Error("Failed to read file")); } }; reader.onerror = (event) => { reject(event.target.error); }; // 参数file: 从中读取的 Blob 或 File 对象 reader.readAsDataURL(file); }); } </script> </body> </html>
window.URL.createObjectURL 方法 返回一个 url,可以直接放在 img 的src 属性上,也可以直接放在浏览器打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input id="file2" type="file" value="createObjectURL 方式" multiple> <script> let file2El = document.querySelector('#file2') file2El.onchange = function () { let files = file2El.files for (const item of files) { // 接收 File、Blob 或 MediaSource 对象。 let url = window.URL.createObjectURL(item) console.log('url', url); let img = document.createElement('img') // createObjectURL 返回的格式比如:blob: http://127.0.0.1:5500/3c9e3502-1c0c-4dae-b4dc-26b68f207285 img.src = url document.body.appendChild(img) } } </script> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。