zoukankan      html  css  js  c++  java
  • node.js打开本地文件,文件名称包含特殊字符而打不开的解决方式

    项目需求是下载完一个excel之后能直接打开文件,开始写的如下方法

    openEXCEL(){
    //this.bomoutput是文件存放在本地的路径
    //先测试下是否有this.bomoutput文件
          myUtils.haveFile(this.bomoutput,(d)=>{
            if(d){
    //有的话执行打开操作,一句命令就可以,但是怎么也不成功,后来各种尝试是因为文件名称中有特殊字符“()”,因为尝试过没有特殊字符就可以打开。
              childProcess.exec(`${this.bomoutput}`, { encoding: 'binary' },(err,stdout,stderr)=>{
                if(stdout){
                  console.log("stdout");
                  console.log(this.iconv.decode(stdout, 'cp936'))
                } else {
                } 
                this.dialogFinishBomVisible=false;
              })
            }
          })
        },
    解决方法:传的路径要加上“”,作为一个整体,现在可以直接打开带特殊字符的文件了
    childProcess.exec(`"${this.bomoutput}"`, { encoding: 'binary' },(err,stdout,stderr)=>{
                if(stdout){
                  console.log("stdout");
                  console.log(this.iconv.decode(stdout, 'cp936'))
                } else {
                } 
                this.dialogFinishBomVisible=false;
              })
     
    以上是直接打开文件的方法,补充一下打开文件所在目录的方法,如下:
    //需要用到电脑自带的explorer
    openDirectory(){
           let openpath = path.join(this.bompath.dir+'\明细表');//要打开的文件夹
          console.log(openpath)
          childProcess.exec(`explorer ${openpath}`, (err,stdout,stderr)=>{
            if (err) {
            } else {
            }
            this.dialogFinishBomVisible=false;
          })
        },
     
    不断学习.jpg
  • 相关阅读:
    如何使用Eclipse和GCC搭建STM32环境
    增量式pid和位置式PID参数整定过程对比
    webrtc 源码结构
    小米路由器刷Xiaomi Mi WiFi Mini openwrt
    js jQuery 右键菜单 清屏
    沉默的大多数 (王小波)
    kindle书摘-活着-余华-活着不易,珍惜
    kindle书摘-围城-相爱勿相伤
    Nagios系列1,选择
    红楼梦人物关系图,一代大师成绝响,下回分解待何人,kindle读书摘要
  • 原文地址:https://www.cnblogs.com/shanxinxin/p/12753303.html
Copyright © 2011-2022 走看看