<input> type 类型为 file 时使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,或者通过 JavaScript 的 File API 对文件进行操作 .
常用input属性:
accept:指示file类型,没有时表示不限制类型,填入格式后选择文件时只能看见被允许的文件
accept="image/png" 或 accept=".png" 表示只接受 png 图片.
accept="image/png, image/jpeg" 或 accept=".png, .jpg, .jpeg" 表示接受 PNG/JPEG 文件.
accept="image/*" 接受任何图片文件类型. audio/* 表示音频文件video/* 表示视频文件
accept=".doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" 接受任何 MS Doc 文件类型.
accept 属性并不会验证选中文件的类型. 他只是为开发者提供了一种引导用户做出期望行为的方式而已, 用户还是有办法绕过浏览器的限制。因此, 在服务器端进行文件类型验证是必不可少的。
multiple:Boolean ,指示用户能否多个输入,type为email或file时生效
required:指定用户在提交表单之前必须保证该元素值不为空。当 type 属性是 hidden,image 或者按钮类型(submit,reset,button)时不可使用。
:optional 和 :required css 伪元素的样式将可以被该字段应用作外观。
事件:
change事件
示例
<template>
<div>
<input type="file" id="upload" multiple @change="upload"></input>
</div>
</template>
<script>
export default {
methods: {
upload(e) {
// 获取文件信息
// 返回值是一个 FileList 对象,这个对象是一个包含了许多 File 文件的列表(你也可以像列表一样操作它).
// 每个 File 对象包含了下列信息:
// name: 文件名.
// lastModified: UNIX timestamp 形式的最后修改时间.
// lastModifiedDate: Date 形式的最后修改时间.
// size: 文件的字节大小.
// type: 文件类型.
// let files=document.getElementById(‘upload‘).files
// 获取单个文件信息
let file = e.target.files[0]
// 文件信息获取后根据file.type判断类型,根据file.size限制判断大小,最后上传,建议上传单独一个写button
const formdata = new FormData()
formdata.append(‘file‘, file)
// 调接口,data为formdata
}
}
};
</script>