【vue2】前端文件上传与下载原理与使用

原理与实例

前提:文件的传输是数据流形式;

文件上传原理:form形式、ajax/axios请求+FormData实例形式
获取文件数据File对象,上传文件必须设置multipart/form-data形式(两种方法:1、通过form标签的enctype;2、通过请求头设置:Content-Type:'multipart/form-data');

  • 【如果是通过form表单的action请求】:通过内部input标签传参并提交;
  • 【如果是通过ajax/axios等非form表单形式】:通过new FormData()实例的formData.append('file',file);等方式形成请求参数,最后将参数通过ajax/axios请求发送;响应数据为获取成功。

补充

  • form标签<form action="" method="post" enctype="multipart/form-data"></form>

  • Input标签<input type="file" name="file" multiple="multiple" />,这个输入框在上传时的值是File对象(multiple:支持多文件);
    在这里插入图片描述

    • 第三方封装组件:如iview的Upload 上传;就是对原生input的封装;

文件下载原理:form方式、ajax/axios请求+手动创建dom形式

思路:

  • 方式一:正常使用form标签;或者手动创建form元素、内部input元素传参,最后调用document.createElement('form').submit()
  • 方式二:通过ajax/axios请求获取后端传来的文件地址(二进制数据要转Blob,怎么转:请求时配置响应类型responseType:‘blob’,通过let blob=new Blob(res,type:res.type)。然后通过URL.createObjectURL(blob)获取文件url),手动创建a标签利用download属性来下载;

3.用哪一种形式下载,取决于后端返回filekey还是文件流。
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值