zoukankan      html  css  js  c++  java
  • Vue实现文件的上传与下载

    项目需求: 前端页面需要导出Excel文件,传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据

    1、get的下载方式
     let url =  xxxx.action?a=xx&b=yy;
     window.location.href = url;
     // 或者
     window.open(url, '_self')

    弊端:当请求参数较多时,get的方式无法使用,这时候需要考虑post的方式,但是直接通过ajax的post的方式无法调用浏览器的下载功能

    2、post的下载方式

    原理: 创建一个隐藏form表单,通过form表单的提交刷新功能,实现下载。

    代码如下:

    export default {
      methods: {
        // 导出excel
        postExcelFile (params, url) {
          // params是post请求需要的参数,url是请求url地址
          var form = document.createElement('form')
          form.style.display = 'none'
          form.action = url
          form.method = 'post'
          document.body.appendChild(form)
          // 动态创建input并给value赋值
          for (var key in params) {
            var input = document.createElement('input')
            input.type = 'hidden'
            input.name = key
            input.value = params[key]
            form.appendChild(input)
          }
    
          form.submit()
          form.remove()
        }
      }
    }

    需要注意的是,这种方式的enctype默认为form-data的形式,而不是application/json的格式,因此后端的接口也应该要参数格式一致。

    正常情况下,可以修改enctype的值,参考文章:

    https://www.cnblogs.com/mmzuo-798/p/11634055.html

     

  • 相关阅读:
    oa_mvc_easyui_删除(6)
    oa_mvc_easyui_详细页(5)
    oa_mvc_easyui_分页(4)
    oa_mvc_easyui_后台布局(3)
    oa_mvc_easyui_登录完成(2)
    oa_mvc_easyui_项目搭建及登录页面验证码(1)
    第六篇 ajax
    AOP切入点表达式
    开发的时候,有异步回调的时候,问题终于解决了
    mysql数据表结构查询
  • 原文地址:https://www.cnblogs.com/lcxcsy/p/13787027.html
Copyright © 2011-2022 走看看