/
upload.js
executable file
·45 lines (35 loc) · 1.23 KB
/
upload.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const path = require('path');
const sendToWormhole = require('stream-wormhole');
const Controller = require('egg').Controller;
const fs = require('fs');
const mkdirp = require('mkdirp');
class UploaderController extends Controller {
async upload() {
const ctx = this.ctx;
const stream = await ctx.getFileStream();
const name = path.basename(stream.filename);
let now = new Date();
let today = path.join(now.getFullYear().toString(), (now.getMonth() + 1).toString(), now.getDay().toString(),"/");
let folder = path.join(this.app.config.upload.localFilePrex, today);
// let filename = now.getTime() + '__' + name;
let filename = now.getTime() + '.jpg';
try {
fs.accessSync(folder, fs.constants.W_OK);
} catch (err) {
mkdirp.sync(folder);
} finally {
}
const fileAbsoluteName = folder + filename;
var fileWriteStream = fs.createWriteStream(fileAbsoluteName);
stream.pipe(fileWriteStream);
fileWriteStream.on('close',function(){
console.log('copy over');
});
let url = `${this.app.config.upload.remoteFilePrex}` + today + filename;
ctx.body = {
"status": "success",
"url": url
};
}
}
module.exports = UploaderController;