文件上传
2021-03-28 07:27
标签:order func 回调函数 函数 hid size 回调 one 提交 .progress { width: 300px; height: 20px; border: 1px solid hotpink; border-radius: 20px; overflow: hidden; } .step { height: 100%; width: 0; background: greenyellow; } javascript部分 // 如果我们要使用 ajax2.0 结合FormData 来提交数据 必须使用 post document.querySelector(‘input[type=button]‘).onclick = function () { //1.创建对象 var xhr = new XMLHttpRequest(); //2.设置请求行(get请求数据写在url后面) xhr.open(‘post‘, ‘./saveFiles.php‘); //3.设置请求头(get请求可以省略,post不发送数据也可以省略) // 如果使用的时 formData可以不写 请求头 写了 无法正常上传文件 // xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //3.5注册回调函数 xhr.onload = function () { console.log(xhr.responseText); } // XHR2.0新增 上传进度监控 xhr.upload.onprogress = function (event) { // console.log(event); var percent = event.loaded / event.total * 100 + ‘%‘; console.log(percent); // 设置 进度条内部step的 宽度 document.querySelector(‘.step‘).style.width = percent; } // XHR2.0新增 var data = new FormData(document.querySelector(‘form‘)); //4.请求主体发送(get请求为空,或者写null,post请求数据写在这里,如果没有数据,直接为空或者写null) xhr.send(data); } PHP部分 // 获取提交的文件信息 print_r($_FILES); // 保存上传的数据 move_uploaded_file($_FILES[‘icon‘][‘tmp_name‘],‘./files/‘.$_FILES[‘icon‘][‘name‘]); ?> 二、上传 ( 基于vue ) 1、页面使用 handleUploadFile(row){ // 通过某一事件触发 this.$refs[‘upload‘].click(); }, async handleUploadChange(e){ // try{ let res = await this.CommonUpload(e); if(res.code == ‘200‘){ // 获取其他code值,根据后台来定 this.handleProjectAddFile(res.data) }else{} } catch(err){} } 2、方法封装 ( 只判断大小,也可通过accept判断要接收的类型 等其他类型 ) CommonUpload(e){ const files = e.target.files; let formData = new FormData(); if(files && files[0]) { const file = files[0]; if(file.size > 1024 * 1024 *3) { alert(‘文件大小不能超过3M‘); return; } else { formData.append("multipartFile", file); } } this.uploadFile_(formData) // 为调用上传接口方法 } 3、问题 当再次选择同一文件时,失效 解决: ( 上传后执行下面 ) 文件上传 标签:order func 回调函数 函数 hid size 回调 one 提交 原文地址:https://www.cnblogs.com/zwjun/p/12623309.html
Ajax上传文件(原生JS篇)
this.$refs[‘upload‘].value = ‘‘; // 解决 input file 第二次失效的问题
原因:
input file value值为新选中的值,所以下次再选同一文件,不会触发change事件
上一篇:HTTP 常见请求状态码