JS客户端下载MinIO保存的文件

js 在客户端下载MinIO的文件

特别要注意一点:

accessKey,secretKey长度小于20时,在js中无法访问MinIO服务器
    /* 下载文档 */
    async downLoad(row){
      let data={
        id:row.id,
        requestType:2 //
      }
      let boolean=await(this.judge(data)); 
      if(boolean){
         dir.look({ id: row.id }).then(res =>{
          let resData = res.data.data;
          let docUrl="";
            if (resData !== null && resData.docUrl !== null) {
              console.log('docUrl',resData.docUrl)
              docUrl = resData.docUrl;
            }else if(resData !== null && resData.pdfUrl !== null){
              console.log('pdfUrl',resData.pdfUrl)
               docUrl = resData.pdfUrl;
            }else{
              this.$message.info("该文档暂时不可下载!")
              return;
            }

            console.log("minio");
            var minioClient = new Minio.Client({
                endPoint: 'localhost',
                port: 9000,
                useSSL: false,
                accessKey: 'XXXXXX',
                secretKey: 'XXXXXX'
            });  
            
            // let filename=row.docName;
            // let filepath=docUrl.substring(docUrl.indexOf('upload/'));
            // let fileExtension=row.suffix;
            let filename="APS排产器产品原型常爱平";
            let filepath="1212121.pdf"
            let fileExtension="pdf";
            let list=new Array();
            var size = 0;
            minioClient.getObject('bladex', filepath, function(err,dataStream) {
              if (err) {
                return console.log(err)
              }
              dataStream.on('data', function(chunk) {
                size += chunk.length
                list.push(chunk);
              })
              dataStream.on('end', function() {
                console.log('End. Total size = ' + size);                
                let u8arr = new Uint8Array(size)
                let u8arrindex=0;
                for(let i=0;i<list.length;i++){
                  for(let j=0;j<list[i].length;j++){
                    u8arr[u8arrindex]=list[i][j];
                    u8arrindex=u8arrindex+1;
                  }
                }

                let filetype="";
                switch(fileExtension)
                {
                  case 'pdf':
                    filetype="application/pdf;charset=utf-8";
                    break;
                  case 'txt':
                    filetype="text/plain;charset=utf-8";
                    break;
                  case 'xls':
                    filetype="application/x-xlw;charset=utf-8";
                    break;
                  case 'doc':
                    filetype="application/msword;charset=utf-8";
                    break;
                  case 'jpg':
                    filetype="image/jpeg;charset=utf-8";
                    break;
                  case 'png':
                    filetype="image/png;charset=utf-8";
                    break;
                  case 'ppt':
                    filetype="application/x-ppt;charset=utf-8";
                    break;
                }
                var file = new File([u8arr], "", { type: filetype });                
                FileSaver.saveAs(file,filename+"."+fileExtension);
              })
              dataStream.on('error', function(err) {
                console.log(err)
              })
            });
         })
      }else{
        this.ifApply=true;
        this.applyType="下载";
      }
    },

  

posted @ 2021-05-17 18:48  科睿思博  阅读(994)  评论(0编辑  收藏  举报