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="下載";
      }
    },

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM