oss在thinkjs上传demo

来源:互联网 发布:mysql 查看临时表空间 编辑:程序博客网 时间:2024/05/22 17:08


在common中添加ossutil.js文件

ossutil.js内容如下:


'use strict';import co from 'co';import OSS from 'ali-oss';import fs from 'fs';export default class extends think.service.base {   init(){      super.init();   }   async uploadFile(file){      let filePath=file.path;      let origName=file.originalFilename;      let fileType=origName.substr(origName.lastIndexOf('.'));      let newFilePath='';      let isChangeName=fileType.match(/\.(gif|png|jpe?g)$/i);      if(think.isEmpty(isChangeName)){         newFilePath=origName;      }else{         let date = new Date();         newFilePath=think.datetime(date,"YYYY/MM/DD/")+date.getTime()+fileType;      }      let result=await this.putStream(newFilePath,filePath);      if(result.res.status==200){         return {"errno":0,"errmsg":""};      }else{         return {"errno":100,"errmsg":"","data":""};      }   }   //本地上传   async put(fileName,filePath){      let client=this.getClient(true);      let result=co(function* () {         let resultCo = yield client.put(fileName, filePath);         return resultCo;      }).catch(function (err) {         console.log(err);      });      return result;   }   //流式上传   async putStream(fileName,filePath){      let client=this.getClient(true);      let result=co(function* () {         let stream = fs.createReadStream(filePath);         let resultCo = yield client.putStream(fileName, stream);         return resultCo;      }).catch(function (err) {         console.log(err);      });      return result;   }   //下载到本地文件   async get(object_key,localFile){      let client=this.getClient(true);      let result=co(function* () {         let resultCo = yield client.get(object_key, localFile);         return resultCo;      }).catch(function (err) {         console.log(err);      });      return result;   }   //流式下载   async getBuyStream(object_key,localFile){      let client=this.getClient(true);      co(function* () {         var result = yield client.getStream(object_key);         var writeStream = fs.createWriteStream(localFile);         result.stream.pipe(writeStream);      }).catch(function (err) {         console.log(err);      });   }   //获取文件buffer   async getBuffer(object_key){      let client=this.getClient(true);      let result=co(function* () {         var resultCo = yield client.get(object_key);         return resultCo.content;      }).catch(function (err) {         console.log(err);      });      return result;   }   //获取Client方法   getClient(hasbucket){      if(hasbucket){         let client = new OSS({            region: 'xxxxxxxxxx',            accessKeyId: 'xxxxxxxxxxx',            accessKeySecret: 'xxxxxxxxxxxxxxx',            bucket: 'xxxxxxx'         });         return client;      }else{         let client = new OSS({            region: 'xxxxxxxx',            accessKeyId: 'xxxxxxxxxx',            accessKeySecret: 'xxxxxxxxxxxxxxxxxxx'         });         return client;      }   }}controller 中代码如下:
import Base from './base.js';export default class extends Base {  /**   * index action   * @return {Promise} []   */  async indexAction(){    return this.display();  }  async uploadAction(){    let file = this.file('file');    let ossutil=think.service('ossutil');    let instance=new ossutil();    let result=await instance.uploadFile(file);    return this.json(result)  }}



1 0
原创粉丝点击