oss在thinkjs上传demo
2016-06-16 17:51
483 查看
在common中添加ossutil.js文件
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) } }
相关文章推荐
- 阿里云存储服务OSS基本概念
- Laravel中使用阿里云OSS Composer包分享
- Docker registry 存储到aliyun oss
- ubuntu13.10 源码安装Mplayer,解决播放无声音问题
- (十四)使用阿里云oss时连接错误
- 通用页面框架CmPage(一):简介
- thinkjs判断访问是否是手机客户端方法
- thinkjs使用Nunjucks模板以及简单的使用方法
- Android从相册中选取图片上传到阿里云OSS
- 阿里云oss post上传文件 JavaScript代码示例 $.ajax()
- android开发之用阿里云OSS加载图片
- 基于HTML5的电信网管3D机房监控应用
- 基于HTML5的WebGL电信网管3D机房监控应用
- 安卓手把手教你结合阿里云OSS存储实现视频(音频,图片)的上传与下载
- 阿里云OSS 上传文件
- linux-2.6.32在mini2440开发板上移植(13)之移植UDA1341 音频驱动
- oss图片处理实例
- 命令行玩转阿里云OSS
- Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)