首页 > 其他分享 >vue下载文件超过10M被拒绝

vue下载文件超过10M被拒绝

时间:2024-02-08 19:22:05浏览次数:28  
标签:vue elink 10M params blob key document 下载

原文链接:https://www.jianshu.com/p/3810d7e463b1

一 问题现象

昨天一朋友遇到超过10M文件,springboot下载文件被拒绝的问题,是秒拒绝。第一反应是不是springboot的配置了限制,通过检查配置,代码和配置中都有文件配置的代码,最大的大小设置为200MB了,根本不存在问题。

其他文件下载小于10MB的,哪怕是9.9MB的文件下载也不存在问题,所以排除了防火墙等问题。

Spring boot的后台提示是如下图:


  报错提示

前台的错误提示是网络错误。

二 抓包排查

一连查了很久也没啥思路,所以就想至少我要知道是服务器段的问题还是axiso这个库的问题,所以进行了抓包,显示如下:


  抓包

看到客户端在收到服务器端的数据后,接近收完了,发起了Reset报文,进行了中断,导致连接被断开。

三 前端代码

 download (url, params, filename) {
    NProgress.start()
    message.info("开始请求")
    return FEBS_REQUEST.post(url, params, {
      transformRequest: [(params) => {
        let result = ''
        Object.keys(params).forEach((key) => {
          if (!Object.is(params[key], undefined) && !Object.is(params[key], null)) {
            result += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&'
          }
        })
        return result
      }],
      responseType: 'blob'
    }).then((r) => {
      const content = r.data
      const blob = new Blob([content])
      message.info("请求成功,开始下载...")
      if ('download' in document.createElement('a')) {
        const elink = document.createElement('a')
        elink.download = filename
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href)
        document.body.removeChild(elink)
      } else {
        navigator.msSaveBlob(blob, filename)
      }
      NProgress.done()
    }).catch((r) => {
      console.error(r)
      message.error('下载失败,失败原因:' + r)
      NProgress.done()
    })

很多网上代码也是这样子的,后改造为:

 responseType: 'arraybuffer'

更改这种方式后,可以正常下载,我不知道什么原因,暂时记录下。

标签:vue,elink,10M,params,blob,key,document,下载
From: https://www.cnblogs.com/fswhq/p/17823658.html

相关文章

  • 电子书下载网站
    目录读秀点点文档读秀https://www.duxiu.com/点点文档https://www.torrent.org.cn/bd......
  • java11下载安装
    https://www.oracle.com/in/java/technologies/javase/jdk11-archive-downloads.html https://jdk.java.net/java-se-ri/11-MR2 ......
  • 在vue中使用amis
    之前在使用amis时,是通过百度给的一个完整amis示例来用的,没有结合到自己的vue项目中,传送门:低代码平台amis学习本次简单介绍下,如何在vue中引入ami1、首先要在vue项目中引入amis的sdk引入方式有2种:(1)使用cdn方式  (2)下载sdk文件-本地引用(1)使用cdn方式,直接引用远程资源打......
  • Vue中不刷新页面,只刷新局部组件的方法
    第一步:组件后面加上v-if方法<divid="app"ref="app"><router-viewv-if="is_show"/></div>第二步:data定义一个变量控制v-ifdata(){return{is_show:true//定义一个变量控制v-if}第三步:自定义刷新局部组件方法reflash:asyncfunction(){......
  • Vue中使用Echarts
    第一步:安装echarts模块cnpminstallecharts-S第二步:在main.js中全局引入importechartsfrom'echarts'Vue.prototype.$echarts=echarts//全局引入后面用this.$echarts就能直接使用了使用方式:template中<template><el-cardclass="box-card"style=&quo......
  • P2986 [USACO10MAR] Great Cow Gathering G
    原题链接题解很简单想到暴力,但是\(O(n^2)\)显然不行所以要减少计算量,如何利用已经计算过的值而不是重新算一遍呢?这道题最好看成有中心点的网状图,而不是树状图随便取一个点\(A\)作为根节点,很容易计算其答案,如何计算以其他点为根节点的答案呢?对于以根节点的邻边节点\(B\)......
  • Avalonia 越来越流行了,记录练手一个项目.就下载bing的图片吧
     只要有桌面需求那肯定掏出万年winform..偶然接触到了Avalonia把去年练手的项目整理了一下不知道大家练手都写什么...总的来说xaml习惯和wpf差不多.对于我这种经常写前端的后端来说.Avalonia支持css写法很省事. 技术栈Avalonia0.10.18NET7CommunityToolkit.Mvvm......
  • 开启未来创新之门:.NET Conf China 2023 精彩回顾及资料下载
    2023年12月16日-17日,一年一度的.NETConfChina2023中国.NET开发者大会在北京盛大举办!大会以第一天主会场+AI、.NET8、云原生、IoT、前端&安全5大分会场,第二天闭门会议+三场工作坊的形式,为现场以及线上的.NET爱好者们带来了为期两天的.NET年度盛宴。本次.NETConf......
  • 如何下载链接为blob类型的视频
    示例这里以央视网视频为例获取m3u8链接F12打开开发者工具,网络中搜索m3u8,有可能有多个,要区别出我们想要下载的那个注:有些网站不是m3u8格式,比如B站根据链接转为mp4并下载使用这个网站m3u8视频在线提取工具可以转换。参考关于VideoSrc带有blob:http的视频如何......
  • element UI vue脚手架 接入cdn
    vue.config.jsmodule.exports={configureWebpack:{externals:{'element-ui':'ELEMENT',vue:'Vue'}}//externals配置来告诉Webpack不要打包它。 index.html<!DOCTYPEhtml><htmllang="en&qu......