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