前端处理文件流(下载,上传)

下载(接口返回的是文件流的)

首先配置请求的地方加上responseType:"blob" !!!

export function downloadTestExcel() {
  return crewordRequest({
    url: "路径",
    method: "get",
    responseType: "blob",
  });
}

然后绑定点击事件

async downLoad(){
         const res = await downloadTestExcel()       //调用方法
         let blob = new Blob([res], {
           type: "application/octet-stream",
         });
         var link = document.createElement("a");       
         link.href = window.URL.createObjectURL(blob);
         link.download = "常用语库.xls";
         link.click();
         //释放内存
         window.URL.revokeObjectURL(link.href);
},

上传

自己手写文件上传

1.首先创建一个input类型为file的标签(input file类型标签不能自定义样式,如果要自定义样式的话就要隐藏这个input 然后写自己需要的样式,最后绑定点击事件去触发input)

<input ref="file" type="file" accept=".xls,.xlsx" style="display:none"  @change="fileChange">

触发input

this.$refs.file.click()

2.给input绑定change事件,在input发生改变的时候去获取文件流和名字等(这里我只获取了文件流,但是名字什么的都在文件流里面,可以console出来看看就知道了)

fileChange(e){
        let file = e.target.files[0]
},

3.获取到了文件流,就是调用接口传给后台

 async upload(file){
        let formData = new FormData()
        formData.append("file",file)
        const res = await uploadOftenWord(formData)
        if(res.code === 200){
          console.log(res)
        }
 },

注:如果是多文件上传的话,就在input里面加上 multiple="multiple" 这个属性,然后去获取fileList这个数组, 这个数组就是 e.target.files数组,最后上传如下

async upload(fileList){
        let formData = new FormData()
        fileList.map(item=>{
            formData.append("file",item)        
        })
        const res = await uploadOftenWord(formData)
        if(res.code === 200){
          console.log(res)
        }
},

因为FormData 的append() 方法 会添加一个新值到 FormData 对象内的一个已存在的键中,如果键不存在则会添加该键。

FormData.set 和 append() 的区别在于,如果指定的键已经存在, FormData.set 会使用新值覆盖已有的值,而 append() 会把新值添加到已有值集合的后面。


如果要清空file文件 可以用下面这个方面

this.$refs.file.value = ""

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Django 中处理前端传递的文件,可以通过以下步骤实现: 1. 在前端,使用 JavaScript文件发送给 Django 后端。你可以使用 Fetch API 或 XMLHttpRequest 来发送文件。 2. 在 Django 的视图函数或类中,处理 POST 请求并获取传递的文件数据。 3. 可以使用 Django 的文件操作来处理接收到的文件。你可以选择将文件保存到服务器上的指定位置,或者对文件进行其他操作(如读取内容、转换格式等)。 4. 返回适当的响应给前端,告知文件处理的结果。 下面是一个简单的示例代码: ```javascript // frontend.js const fileInput = document.getElementById('file-input'); fileInput.addEventListener('change', () => { const file = fileInput.files[0]; const formData = new FormData(); formData.append('file', file); fetch('/upload/', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { console.log(data); }) .catch(error => { console.error(error); }); }); ``` ```python # views.py from django.http import JsonResponse def upload_file(request): if request.method == 'POST': file = request.FILES['file'] # 处理文件,比如保存到服务器上的指定位置 with open('path/to/save/file.ext', 'wb+') as destination: for chunk in file.chunks(): destination.write(chunk) # 返回适当的响应给前端 return JsonResponse({'message': '文件上传成功'}) return JsonResponse({'message': '无效的请求'}) ``` 在这个示例中,我们使用 JavaScript 监听文件输入框的变化事件,获取用户选择的文件,并将其作为文件发送给 Django 后端。然后,在 Django 的视图函数 `upload_file` 中,我们使用 `request.FILES` 获取传递的文件数据,并将其保存到服务器上的指定位置(`path/to/save/file.ext`)。最后,我们返回一个 JSON 响应给前端,告知文件上传的结果。 请根据你的需求修改代码来满足你的实际情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值