前提,不考虑该类型的选择就上传问题(那样直接考虑ui组件库,如element-ui中的upload组件),该文仅仅是实现原生 input type=file的ui优化
以vue项目为例,基于elemnt-ui开发
<el-button id="importCsv" type="primary" @click="importCSV">导入csv</el-button>
<input type="file" id="uploadCsv" v-model="addOrEditForm.filePath" accept="*/*" @change="fileChange"/>
id为uploadCsv 元素要设置隐藏
点击 id为importCsv的按钮,触发id为 uploadCsv的click事件执行。
需要处理id为uploadCsv的元素的change事件 fileChange(视具体业务定)
function fileChange() {
const strVal = $("#uploadCsv").val(); // 显示的文件路径地址
this.addOrEditForm.file = $("#uploadCSV").get(0).files[0]; // 实际需要上传的file类型数据
this.addOrEditForm.filePath = strVal;
if (strVal.length) $("#importCsv").html(strVal);
},
绑定filePath的目的是为了对表单是否选择的上传文件做判断使用,
v-model="addOrEditForm.filePath" 注意:v-model绑定到这里不能绑定file文件,只能绑定filename,否则会报错
网友评论