你可以通过以下 JavaScript 代码触发文件选择器:这里的场景不是通过input
标签来触达的文件选择器,这样对于样式较为复杂的上传可以在html结构上保持清爽愉快,不用多添加一个input标签。
// 创建一个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,可以将一切媒体的类型的文件可以上传,但是有些场景只是上传图片,如何通过简单的方法实现呢?
input.accept
是用于指定文件选择器接受的文件类型的属性。通过设置 accept
属性,你可以限制用户只能选择特定类型的文件。这在需要特定类型文件的应用场景中很有用,例如只允许选择图像文件或文档文件。
实例:
<!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>
在上述示例中,文件选择器只允许选择图像文件,因为 accept
属性设置为 image/*
。你可以根据需要更改 accept
属性的值来限制文件类型。
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/*'
//但是大批量筛选会延时打开文件选择器弹窗的速度,所以只需要指定格式的即可
在前端,input
标签的文件选择器在用户选择文件后会触发change
事件。你可以通过监听这个事件来获取用户选择的文件。当用户在文件选择框中选择一个文件并确认选择时,change
事件将被触发。
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
});