Browse Source

upload接口增加路径参数item,用来指定上传后的文件名

dygapp 6 years ago
parent
commit
1e449093d2
4 changed files with 14 additions and 8 deletions
  1. 10 6
      app/controller/files.js
  2. 1 1
      app/public/demo.html
  3. 1 0
      app/router.js
  4. 2 1
      test/path.js

+ 10 - 6
app/controller/files.js

@@ -12,7 +12,7 @@ class FilesController extends Controller {
 
   async upload() {
     const { ctx, app } = this;
-    const { appid, catalog } = ctx.params;
+    const { appid, catalog, item } = ctx.params;
     assert(appid);
     const stream = await ctx.getFileStream();
     ctx.logger.debug(stream);
@@ -20,18 +20,22 @@ class FilesController extends Controller {
     const rootPath = `${app.config.cdn.repos_root_path}`;
     const rootUrl = `${app.config.cdn.repos_root_url}`;
     const dirs = [ appid ];
-    if (catalog) {
-      dirs.push(catalog);
+    if (catalog && catalog !== '_') {
+      const subs = catalog.split('_');
+      dirs.push(...subs);
     }
-    const saved = await this.saveFile(rootPath, dirs, stream);
+    const saved = await this.saveFile(rootPath, dirs, stream, item);
     const uri = `${rootUrl}/${dirs.join('/')}/${saved.fileName}`;
     ctx.body = { errcode: 0, errmsg: 'ok', id: saved.id, name: saved.fileName, uri };
   }
 
-  async saveFile(rootPath, dirs, stream) {
+  async saveFile(rootPath, dirs, stream, name) {
     const ctx = this.ctx;
     const ext = extname(stream.filename).toLowerCase();
-    const name = moment().format('YYYYMMDDHHmmss');
+    // TODO: 指定文件名或者按时间生成文件名
+    // const name = moment().format('YYYYMMDDHHmmss');
+    if (!name) name = moment().format('YYYYMMDDHHmmss');
+
     // TODO: 检查根路径是否存在,不存在则创建
     ctx.logger.debug('rootPath: ', rootPath);
     if (!fs.existsSync(rootPath)) {

+ 1 - 1
app/public/demo.html

@@ -15,7 +15,7 @@
 
 <body>
   <div id="app">
-  <el-upload action="/files/demo/upload" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove"
+  <el-upload action="/files/demo/_/test/upload" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove"
     :on-success="handleUploadSuccess">
     <i class="el-icon-plus"></i>
   </el-upload>

+ 1 - 0
app/router.js

@@ -8,4 +8,5 @@ module.exports = app => {
   router.get('/', controller.home.index);
   router.post('/:appid/upload', controller.files.upload);
   router.post('/:appid/:catalog/upload', controller.files.upload);
+  router.post('/:appid/:catalog/:item/upload', controller.files.upload);
 };

+ 2 - 1
test/path.js

@@ -1,4 +1,5 @@
+'use strict';
 const path = require('path');
 
 console.log(path.join('home', 'jilinjobs', 'ui'));
-console.log(path.join(...['home', 'jilinjobs', 'ui']));
+console.log(path.join(...[ 'home', 'jilinjobs', 'ui' ]));