vue3+ant design vue 自定义文件上传和自定义上传进度条

简介: 1.关键点是Upload组件中customRequest的API,它能通过覆盖默认的上传行为,可以自定义自己的上传实现(具体可看官方文档);2.通过在Upload组件中绑定progress实现。下面是详细代码

<!-- html部分 -->

     <a-upload-draggerref="upload"  name="file" :multiple="true"

           :customRequest="customRequest"

           :progress="progress"

     @drop="handleDrop"

     @remove="removeFile">

       <pclass="ant-upload-drag-icon">

         <inbox-outlined></inbox-outlined>

       </p>

       <pclass="ant-upload-text">点击或拖拽文件上传</p>

       <pclass="ant-upload-hint">

         支持单个或批量上传。

       </p>

     </a-upload-dragger>


// 上传进度条(直接拿官方的样式)

 constprogress: UploadProps['progress'] = {

   strokeColor: {

     '0%':'#108ee9',

     '100%':'#87d068'

   },

   strokeWidth:3,

   format: (percent: any) =>`${parseFloat(percent!.toFixed(2))}%`,

   class:'test'

 }


// 存储要上传的文件(用于后续有需要的操作)

letneedFile: FormData = newFormData();


 // 上传文件 请求

 constemployeeFileUpload = async (File: { file: any; onProgress?: any; onSuccess?: any }) => {

   const { file, onProgress, onSuccess } = File

       constformData = newFormData();

       // 注意 这个file 是一个对象 我们只要里面的 file

       formData.append('file', file)

         formData.append('page',String(PreviewData.page)) //这是我自己的功能需求所需的参数,可不看

         needFile = formData;

         // 进度条相关配置:

         letconfig = {

         timeout:120000,

         onUploadProgress: (Progress: { loaded: number; total: number }) => {

           letpercents = Math.round((Progress.loaded * 100) / Progress.total)

           // 更新进度条

           onProgress({ percent:percents }, file)

         }

       }

       constres: any = awaitreqUploadFilePreview(formData,config)

       console.log(res, 'res  --->');

       if (res.code === 200) {

         // 如果预上传成功:进度条成功,并将数据返回给表格(这也是个人功能需求,只需要看onSuccess即可)

         onSuccess(res, file)

         dataSource.value = res.data.data;

         total.value = res.data.total

         returnres.data;

       }

       returnPromise.reject(newError(res.msg));

     }


// 组件绑定该自定义预上传方法

 constcustomRequest = async(file: any)=>{

   // 接口请求

   employeeFileUpload(file).then((request: any) => {

         message.success(request.msg);

       }).catch((e) => {

         message.error(e.msg);

       });

 }


下面是接口api

//上传文件的请求

exportconstreqUploadFilePreview: (data: any,config?: object) =>Promise<AxiosResponse> = (data,config) =>

 request({

   url:'你的url',

   method:'post',data, ...config

 });

目录
相关文章
|
18天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
19天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
14天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
117 64
|
21天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
24 1
vue学习第一章
|
21天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
23 1
vue学习第三章
|
14天前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
25 8
|
14天前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
18天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
19 1
|
18天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
26 1
|
18天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的