zoukankan      html  css  js  c++  java
  • eggjs上传文件,并md5名称保存

    安装插件:

    npm i md5 --save

    npm i egg-multipart --save

    npm i stream-to-array --save

    npm i stream-wormhole --save

    主要代码:  // upload.js

    'use strict';
    const md5 = require('md5')
    const path = require("path")
    const fs = require("fs")
    const toArray = require('stream-to-array');
    const sendToWormhole = require('stream-wormhole');
    
    const Controller = require('egg').Controller;
    const settings = require('../../config/settings');
    
    class UploadController extends Controller {
    
      async post() {
        const { ctx } = this;
        let dir_name = ctx.params.dir_name
        const stream = await ctx.getFileStream();
        let url = ""
        try {
          const parts = await toArray(stream);
          let data = Buffer.concat(parts);
          let file_md5 = md5(data)
          let file_name = `${file_md5}${path.extname(stream.filename)}`
          let file_path = path.join(this.config.baseDir, "app/public", dir_name, file_name)
    
          // 保存文件
          // console.log(file_path)
          await fs.writeFile(file_path, data, (err) => { });
          url = `http://${settings.addr}:${settings.port}/static/${dir_name}/${file_name}`
    
        } catch (err) {
          await sendToWormhole(stream);
        }
        
        ctx.body = {
          url: url
        };
        
      }
    }
    
    module.exports = UploadController;

    路由:

     配置: // mode: stream

     使用:

    参考官方文档:  // 有写法例子,在他的基础上加了md5而已

    https://github.com/eggjs/egg-multipart

    https://github.com/eggjs/examples/blob/master/multipart/app/controller/buffer.js

  • 相关阅读:
    Nexus OSS 3 搭建 Docker & Git LFS 仓库
    YARN FairScheduler
    k8s基本概念及使用
    k8s 基本使用
    10款非常实用的在线网站原型设计工具
    Spark常见问题及性能调优
    spark常见问题处理
    TensorFlow 基本使用
    c语言数组的操作
    在Android开发中遇到的MediaPlayer问题
  • 原文地址:https://www.cnblogs.com/zezhou/p/14744081.html
Copyright © 2011-2022 走看看