123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // 公共文件
- 'use strict';
- const Service = require('egg').Service;
- const fs = require('fs');
- const path = require('path');
- class FileService extends Service {
- // 文件下载
- async download({ filePath }) {
- const target = path.join(filePath);
- this.ctx.attachment(target);
- this.ctx.set('Content-Type', 'application/octet-stream');
- const msg = fs.createReadStream(target);
- return msg;
- }
- // 文件上传
- async upload({ name, stream }) {
- return new Promise((resolve, reject) => {
- const target = path.join(`${name}`);
- const remoteFileStream = fs.createWriteStream(target);
- stream.pipe(remoteFileStream);
- let errFlag;
- remoteFileStream.on('error', err => {
- errFlag = true;
- remoteFileStream.destroy();
- reject(err);
- });
- remoteFileStream.on('finish', async () => {
- if (errFlag) return;
- resolve({ errcode: 0, errmsg: '' });
- });
- });
- }
- // 文件写入
- async write({ filePath, str }) {
- return new Promise((resolve, reject) => {
- fs.writeFile(path.resolve(filePath), str, {}, function(err) {
- if (err) {
- reject(err);
- }
- resolve({ errmsg: '', errcode: 0 });
- });
- });
- }
- // 文件删除
- async filesDel(filePath) {
- const cafile = path.join(filePath);
- return new Promise((resolve, reject) => {
- fs.unlink(cafile, function(err) {
- if (err) {
- reject(err);
- }
- resolve({ errmsg: '', errcode: 0 });
- });
- });
- }
- // 文件读取
- async fileread(filePath) {
- return new Promise((resolve, reject) => {
- fs.readFile(filePath, (err, data) => {
- if (err) {
- reject(err);
- }
- resolve({ errmsg: '', errcode: 0, data });
- });
- });
- }
- }
- module.exports = FileService;
|