vue实现文件下载
发布日期:2021-05-14 08:28:44 浏览次数:16 分类:精选文章

本文共 1886 字,大约阅读时间需要 6 分钟。

Vue中实现文件下载,可以使用a链接的方式,这是最简单的方法。对于前端开发人员而言,将文件以Blob形式返回,再通过a链接触发下载,就是一个直接又高效的解决方案。

显著特点

  • 无需多余步骤:通过设置download属性即可完成文件下载
  • 不受浏览器限制:直接触发下载,不会因为浏览器限制而失败
  • 简单易实现:无需复杂的文件拼接或传输
  • FileAPI 操作示例

    以下是使用FileAPI进行文件处理的基本示例代码:

    handlePreview文件表单的` file-input `元素
    // 检查用户是否安装了 Blob API
    if (window.File && window.Blob) {
    // 前端请求接口方法
    handlePreview(file) {
    let typeArray = file.url.split('.')
    let type = typeArray[typeArray.length-1]
    let data = {
    url: file.url,
    name: file.name
    }
    fileUpload._getDownLoad(data).then((res) => {
    let url = window.URL.createObjectURL(new Blob([res]))
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', file.name)
    document.body.appendChild(link)
    link.click()
    })
    }
    }

    后端配置示例

    @RequestMapping(value = "/getDownLoad", method = RequestMethod.POST)
    public void getDownLoad(HttpServletResponse response, @RequestBody Imgurl imgurl) throws IOException {
    //adaş littre kebab-case noodle
    File file = new File(imgurl.getUrl())
    inputStream = new FileInputStream(file)
    ByteArrayOutputStream os = new ByteArrayOutputStream()
    byte[] buffer = new byte[1024]
    int length
    while ((length = inputStream.read(buffer)) != -1) {
    os.write(buffer, 0, length)
    }
    byte[] data = os.toByteArray()
    response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(imgurl.getName(), "UTF-8") + "\"")
    response.addHeader("Content-Length", String.valueOf(data.length))
    response.setContentType("application/octet-stream; charset=UTF-8")
    IOUtils.write(data, response.getOutputStream())
    }

    注意事项

  • 处理文件大小:注意文件的大小,不要传输过大的文件
  • 回复类型设置:记得在前端设置returnType为'blob'
  • 防止多次点击:在点击时立即处理,避免重复操作
  • 目录结构

  • Vue文件下载的简单方法
  • 使用步骤详解
  • 后端接口配置示例
  • 完整代码示例
  • 上一篇:Java文件上传和下载
    下一篇:vue使用uuid

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月12日 22时26分37秒