【前端开发】js上传文件组件封装
当前页使用,element ui组件为例
1、html
<el-upload class="upload-template" :class="{ 'no-files': !fileList.length }" action="#" :accept="accept" :file-list="fileList" :http-request="uploadSectionFile" :before-upload="beforeUpload" > <div slot="tip" class="el-upload__tip el-mt-2">请上传doc/docx文件</div> <el-button slot="trigger" type="primary">上传模板</el-button> <el-button class="el-ml-3" @click="clearFile">清空模板</el-button> <input id="editTemplate" type="file" style="display:none" /> <template slot="file" slot-scope="scope"> <a v-if="scope.file.status !== 'uploading'" class="el-upload-list__item-name" @click="handleFileClick(scope.file)" > <svg-icon icon-class="icc-files-doc" class="el-mr-2" />{{ scope.file.description }} </a> <label class="el-upload-list__item-status-label"> <i :class="{ 'el-icon-upload-success': true, 'el-icon-circle-check': true }" /> </label> <i slot="trigger" class="update-icon list-item-icon el-primary" title="更新模板" @click="handleEditFile(scope.file)" > <svg-icon icon-class="ic-upload" /> </i> <el-tooltip class="item-btn" content="删除模板" placement="top"> <i class="el-icon-delete list-item-icon btn-delete" @click="handleRemoveFile(scope.file)" /> </el-tooltip> <el-progress v-if="scope.file.status === 'uploading'" type="line" :stroke-width="2" :percentage="parsePercentage(scope.file.percentage)" /> </template> </el-upload>
2、js
限制上传文件类型
private accept: string = '.doc,.docx'
上传事件触发
// 上传模板 async uploadSectionFile(content: any) { let type = content.file.type content.file.description = content.file.name let description = content.file.name let params = { reportId: this.reportId, description: description } let file = new FormData() file.append('file', content.file)try { let res = await addReportTemplate(params, file, content) this.getReportTemplate() this.$message.success('新增模板成功') } }
3、上传接口注意
// 新增报表模板 export function addReportTemplate(params: { reportId: string; description: string }, file: any, content: any) { return request({ method: 'post', url: 'admin/reportTemplate', params: params, onUploadProgress: progressEvent => { let percent = ((progressEvent.loaded / progressEvent.total) * 100) | 0 // 调用onProgress方法来显示进度条,需要传递个对象 percent为进度值 content.onProgress({ percent: percent }) }, data: file, baseURL: buseBaseUrl }) }
本文来自博客园,作者:JeckHui;
个人主页:前端实用站点推荐; 热榜资讯早读:热榜资讯-导航;
转载请注明原文链接:https://www.cnblogs.com/xiaohuizhang/p/14421878.html
分类:
前端开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)