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

      

  • 相关阅读:
    hdu 1086 You can Solve a Geometry Problem too 求n条直线交点的个数
    2019 上半年 南昌网络赛
    第十章 存储过程和函数
    第九章 Mysql函数
    第八章 Mysql运算符
    第七章 插入、更新与删除数据
    第六章 查询数据
    第五章 触发器
    第四章 视图
    第三章 索引
  • 原文地址:https://www.cnblogs.com/mikechang/p/14778091.html
Copyright © 2020-2023  润新知