js触发input的打开文件选择器,将本地图片回显以及上传
你可以通过以下 JavaScript 代码触发文件选择器:这里的场景不是通过
选择文件
- 示例demo,理解思路
// 创建一个input元素 var input = document.createElement('input'); // 设置input类型为file,表示文件选择器 input.type = 'file'; // 添加change事件监听器,当用户选择文件后触发 input.addEventListener('change', function (event) { // 获取选择的文件 var selectedFile = event.target.files[0]; // 在这里你可以处理选择的文件,比如读取内容或上传到服务器等 console.log('选择的文件:', selectedFile); }); // 触发文件选择器 input.click();
这里的file,可以将一切媒体的类型的文件可以上传,但是有些场景只是上传图片,如何通过简单的方法实现呢?
实例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>File Input Example</title> </head> <body> <label for="fileInput">选择图像文件:</label> <input type="file" id="fileInput" accept="image/*"> <script> // 添加change事件监听器,当用户选择文件后触发 document.getElementById('fileInput').addEventListener('change', function (event) { // 获取选择的文件 var selectedFile = event.target.files[0]; // 在这里你可以处理选择的文件,比如读取内容或上传到服务器等 console.log('选择的文件:', selectedFile); }); </script> </body> </html>
在上述示例中,文件选择器只允许选择图像文件,因为
- ok,那么这里的
accept 属性,我们只需要放在js代码中开始即可。例如只需要筛选图片,其实的文件被筛选掉。
const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = 'image/gif,image/jpeg,image/jpg,image/png'; fileInput.click(); //or fileInput.accept = 'image/*' //但是大批量筛选会延时打开文件选择器弹窗的速度,所以只需要指定格式的即可
显示文件
在前端,
fileInput.addEventListener("change",()=>{ // console.dir(fileInput); const windowURL = window.URL || window.webkitURL; // 兼容操作 let fileObj = fileInput.files[0]; let url = windowURL.createObjectURL(fileObj); this.$refs['photo1'].src=url; //等待dom图片加载完毕,即可释放资源。 this.$nextTick(()=>{ URL.revokeObjectURL(url); }) }) },
上传
格式为表单上传。
// 上传图片封装axios函数 export const POST_ADDPIC = (data)=>{ return http.post(API.ADDPIC,data,{ headers: { 'Content-Type': 'multipart/form-data' }, }); } //使用 const form = new FormData() form.append('data', file);//let file = fileInput.files[0]; form.append('id',id); POST_ADDPIC(form) .then((res)=>{ //TODO }) .catch((err)=>{ //TODO });