12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- const fs = require('fs');
- // node.js 路径操作对象
- const path = require('path');
- // 异步二进制 写入流
- const awaitWriteStream = require('await-stream-ready').write;
- // 管道读入一个虫洞。
- const sendToWormhole = require('stream-wormhole');
- const Service = require('./baseService');
- class TestService extends Service {
- tag() {
- return this.ctx.model.testModel;
- }
- async upload(filename) {
- const ctx = this.ctx;
- let stream;
- try {
- stream = await ctx.getFileStream();// 获取文件
- if (!filename) {
- // 新建一个文件名 = 文件名 + 时间 + 文件后缀
- filename = path.parse(stream.filename).name
- + Date.now() + path.extname(stream.filename)
- .toLocaleLowerCase();
- }
- // 文件生成绝对路径 this.app.config.defaultUploadPath
- // 放在服务器什么目录下/strong/images/info_admin/
- const target = path
- .join(this.app.config.defaultUploadPath, filename);
- // 生成一个文件写入 文件流
- const writeStream = fs.createWriteStream(target);
- // 异步把文件流 写入
- await awaitWriteStream(stream.pipe(writeStream));
- return this.app.config.defaultWritePathPre + filename;
- } catch (err) {
- ctx.logger.debug(err);
- // 如果出现错误,关闭管道
- await sendToWormhole(stream);
- return null;
- }
- }
- }
- module.exports = TestService;
|