首页 > 编程语言 >微信小程序下载word

微信小程序下载word

时间:2023-05-22 11:22:19浏览次数:50  
标签:word 微信 application inputUrl exportBaojiaWord response 下载 Dateien

  后台返回数据流给请求方,Uni-app中使用uni.downloadFile。

前端代码

exportFile(){
    uni.showLoading({
        mask:true
    })
    uni.downloadFile({
        url: root+'/portal/offer/record/exportBaojiaWord?list_id='+this.item.list_id, 
        success: (res) => {
            if (res.statusCode === 200) {
                uni.openDocument({
                    filePath:res.tempFilePath,
                    fileType:"docx",
                    showMenu:true
                })
                // console.log('下载成功');
            }
        },
        complete:(res)=>{
            // console.log(res)
            uni.hideLoading()
        }
    });
},

后端代码

@RequestMapping("/record/exportBaojiaWord")
public void exportBaojiaWord(HttpServletRequest request,HttpServletResponse response) {
    try {
        PageData pd = this.getPageData();
        offerService.exportBaojiaWord(pd,response);
    } catch (Exception e) {
        logger.error("OfferRecordController: getRecordPackageListByPage error; ", e);
    }
}



/**
     * 导出报价记录world
     * @param pageData
     * @return
     */
public void exportBaojiaWord(PageData pageData, HttpServletResponse response) {
    /**
         * 
         * 4. 获取word模板
         * 5. 写入数据到word模板
         * 6. 流下载
         */
    Map<String,String> modelMap = new HashMap<>();
    List<List<List<String>>> list = new ArrayList<>();

    String inputUrl = "model.docx";


    Random random = new Random();
    String outputFileName = "报价记录"+random.nextInt(20)+".docx";


    try{
        String path = this.getClass().getClassLoader().getResource("files/"+inputUrl).getPath();
        String filePath = URLDecoder.decode(path, "UTF-8");
        log.info(filePath);
        inputUrl = filePath;

        response.setContentType("application/msword;charset=utf-8");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(outputFileName, "UTF-8"));
        OutputStream outputStream = response.getOutputStream();
        WordToNewWordUtils.changWord(inputUrl, outputStream, modelMap, list);
    }catch (IOException e){
        log.error("",e);
    }
}



public static boolean changWord(String inputUrl, OutputStream fileOutputStream,
                                    Map<String, String> textMap, List<List<List<String>>> tableList) {

    //模板转换默认成功
    boolean changeFlag = true;
    nowTableIndex = -1;
    try {
        //获取docx解析对象
        XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(inputUrl));
        //解析替换文本段落对象
        WordToNewWordUtils.changeText(document, textMap);
        //解析替换表格对象
        WordToNewWordUtils.changeTable(document, textMap, tableList);

        //生成新的word
        document.write(fileOutputStream);
    } catch (IOException e) {
        log.error("生成word文档:",e);
        changeFlag = false;
    }

    return changeFlag;

}

 

注意

response.setContentType("application/msword;charset=utf-8");

如果是传excel,pdf等,要变更这里的contentType,否则微信小程序下载下来就是未知文件。

Mime-Types(mime类型) Dateiendung(扩展名) Bedeutung
application/msexcel *.xls *.xla Microsoft Excel Dateien
application/mshelp *.hlp *.chm Microsoft Windows Hilfe Dateien
application/mspowerpoint *.ppt *.ppz *.pps *.pot Microsoft Powerpoint Dateien
application/msword *.doc *.dot Microsoft Word Dateien

application/octet-stream

*.exe exe
application/pdf *.pdf Adobe PDF-Dateien
application/post****** *.ai *.eps *.ps Adobe Post******-Dateien
application/rtf *.rtf Microsoft RTF-Dateien
application/x-httpd-php *.php *.phtml PHP-Dateien
     
application/x-java****** *.js serverseitige Java******-Dateien
application/x-shockwave-flash *.swf *.cab Flash Shockwave-Dateien
application/zip *.zip ZIP-Archivdateien
audio/basic *.au *.snd Sound-Dateien
audio/mpeg *.mp3 MPEG-Dateien
audio/x-midi *.mid *.midi MIDI-Dateien
audio/x-mpeg *.mp2 MPEG-Dateien
audio/x-wav *.wav Wav-Dateien
image/gif *.gif GIF-Dateien
image/jpeg *.jpeg *.jpg *.jpe JPEG-Dateien
image/x-windowdump *.xwd X-Windows Dump
text/css *.css CSS Stylesheet-Dateien
text/html *.htm *.html *.shtml -Dateien
text/java****** *.js Java******-Dateien
text/plain *.txt reine Textdateien
video/mpeg *.mpeg *.mpg *.mpe MPEG-Dateien
video/vnd.rn-realvideo *.rmvb realplay-Dateien
video/quicktime *.qt *.mov Quicktime-Dateien
video/vnd.vivo *viv *.vivo Vivo-Dateien

 

标签:word,微信,application,inputUrl,exportBaojiaWord,response,下载,Dateien
From: https://www.cnblogs.com/weiyanei/p/17420144.html

相关文章

  • 微信⼩程序开发消息推送配置教程
    微信⼩程序开发消息推送配置这⼀块⽹上都是PHP居多,由于⽤egg.js写了⼀套验证⽅法。第⼀步:填写服务器配置登录微信⼩程序官⽹后,在⼩程序官⽹的“设置-消息服务器”页⾯,管理员扫码启⽤消息服务,填写服务器地址(URL)、Token和EncodingAESKey。URL是开发者⽤来接收微信消息和事件的接......
  • 行人检测(人体检测)1:人体检测数据集(含下载链接)3. COCO数据集
    行人检测(人体检测)1:人体检测数据集(含下载链接)目录行人检测(人体检测)1:人体检测数据集(含下载链接)1.前言2.VOC数据集3.COCO数据集4.MPII数据集5.人体检测(包含人体+人脸框)数据集下载6.人体检测(行人检测)效果(Python版本)7.人体检测(行人检测)效果(Android版本)1.前言这是项目《行......
  • mac软件最佳资源下载站「macw」
    macw是一个专业的Mac苹果电脑软件下载网站。海量Mac软件,Mac教程技巧,壁纸,字体,模板,插件视频等资源集一身。有众多业界所推崇的主流软件,还有许多你不曾了解的小众精品软件。完美破解,人工测试,及时更新。更多详情:https://www.macw.com/?id=ODA2NCZfJjI3LjE4Ni4xMjUuMTE2......
  • 文件上传下载
    文件上传/***文件上传*@return*/@PostMapping(value="/upload")publicStringfileUpload(@RequestParamMultipartFilefile)throwsIOException{//获取源文件名StringoriginalFilename=file.getOriginalFilename();//获取文件类型Strin......
  • 苹果逼停微信赞赏功能,最大赢家是...
    阅读文本大概需要2分钟。想必大家都知道了,今天开始,微信「被逼」关闭了iOS用户的公众号赞赏功能,至于苹果为什么又来找茬?很明显,你做的太大了,威胁了苹果爸爸的地位,要么给我利益分成,要么我就找各种理由制裁你,这是苹果一贯的作风。还记得之前「小程序」刚推出的时候我就说,苹果是颗定......
  • 【fastweixin框架教程6】微信企业号给关注的用户主动发送推送消息
     下面这个类我对fastweixin框架的简单封装调用,大家可以参考,如果需要QYAPIConfigExt和MainServernSupport,请参考本教程以前几篇文章  如需测试,需要去微信企业号官网申请试用账号。其中发送文本消息和图文消息都是没有问题。  我们知道,企业号主要......
  • Wordpress自定义小工具(Widget)简单案例
    在主题对应目录创建文件如widgets.php<?php//继承了WP_Widget这个类来创建新的小工具(Widget):可在后台外观-小工具中添加此自定义小工具到页面具体位置classmy_widgetextendsWP_Widget{publicfunction__construct() { //$widget_ops可以给小工具进......
  • MATLAB 能做什么?Matlab下载_Matlab中文版下载_Matlab使用教程
    MATLAB软件是一款非常强大的科学计算和数据分析工具,广泛应用于工程、物理、金融等领域。对于初次使用MATLAB软件的用户来说,想要运用它进行科学计算和数据分析可能并不是一件容易的事情。因此,本文将通过实际案例的方式,给大家介绍关于MATLAB软件功能使用技巧。首先,让我们来了解一下MA......
  • 请在微信客户端打开链接:火狐浏览器模拟微信浏览器内核教程 ,用chrome模拟微信浏览器访
    背景:微信浏览器能访问,出现,请在微信客户端打开链接。useragentswitcherforfirefox:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/FF越来越不行了,下载都下载不下来~useragentswitcher1.0.34中文版forchrome:http://www.pc6.com/soft/FireFox_133175.h......
  • 解决Anroid7.0以上版本无法抓取微信浏览器中Https请求
    为什么安卓7.0以上的系统,微信7.0版本以上无法抓取https包?原因:1.安卓7.0之后,提高了系统安全性。APP默认不信任用户域的证书2.微信7.0以后更新了安全机制,加入了防止中间人attack的机制详情可搜索sslpinning了解防止中间人attackSSLPinninghttps的网站使用使用伪证书可以抓到,但app......