拥抱代码

网站首页日常笔记心情随笔关于本站

egg.js 框架上传图片配置,使用 form-data 上传,流文件写入

作者:伤无痕 时间:2019-12-25 浏览:3 分类:web前端
egg.js 框架上传图片配置,使用 form-data 上传,流文件写入

这次打破常规初次使用 egg.js 框架,对于我来说也是个不小的挑战,虽然之前做过两年的前端,但是也只是切个页面写点简单的脚本而已。今天再弄后台的时候需要个上传图片的接口,捣鼓了一上午终于完成了这个上传。

配置文件
// config.default.js

config.uploadBaseDir = '';  //图片保存路径

config.multipart = {   // 配置上传
    fileSize: '10mb',
    mode: 'stream',
    fileModeMatch: /^\/upload_file$/,
    fileExtensions: ['.png', '.jpg', '.jpeg', '.gif'], // 扩展几种上传的文件格式
};
安装需要的包
npm install dayjs  md5-node
上传程序
const path = require('path');
const md5 = require('md5-node');
const fs = require('mz/fs');
const dayjs = require('dayjs');
/**
* 上传图片至本地
* @param module
* @returns {Promise<{fileName: string, uploadPath: string, filePath: string, filePathName: string, fileBasePath: any}>}
*/
async image()
{
    let stream = await this.ctx.getFileStream();
    const newTime = new Date();                                          //当前时间
    let fileBasePath = this.config.uploadBaseDir;                        //上传根目录
    let filePath = dayjs(new Date()).format('/YYYYMMDD/');               //上传目录
    let fileName = md5(newTime) +  path.extname(stream.filename);        //文件名
    let filePathName = path.join(filePath, fileName);                    //文件完整路径
    let uploadPath = path.join(fileBasePath, filePathName);              //上传完整路径

    let uploadDir  = path.join(fileBasePath, filePath);
    if (!fs.existsSync(uploadDir))                                       //判断目录是都存在,不存在创建
        fs.mkdirSync(uploadDir, {recursive: true});   //recursive 参数是是否递归创建

    let writerStream = fs.createWriteStream(uploadPath);
    stream.pipe(writerStream);
    writerStream.on('error', function(err) {
        throw err.stack;
    });
    return {
        filePath: filePath,
        fileName: fileName,
        filePathName: filePathName,
    };
}
文章为原创文章,转载请注明来源地址: http://www.hug-code.cn/article/1142.shtml
更多

精彩文章

  • 2019-07-11Javascript设置cookie 之 js-cookie 插件
  • 2019-07-04JQuery 使用 json 生成无限级级联特效
  • 2019-03-25整理收集常用的JS方法,以便日后使用
分类标签
版本控制linuxphppythonnginxmysqlweb前端docker程序杂谈redis全文搜索
文件归档
2019年
02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2020年
01月 02月 03月 04月
推荐信息
热门文章
Docker 安装启动 ElasticSearch 及 head 管理工具mysql 查询一个不存在的字段并赋值,追加(添加)一个字段并指定值ElasticSearch-head 管理工具查询报 406 错误码nginx 访问时判断文件不存在时进行跳转或 rewritecentos7 安装 ftp(vsftpd) 服务、基本配置及创建用户python获取关键词在百度搜索引擎的排名yii2框架查询方法 andFilterWhere 踩过的坑解决docker容器vim报错 bash: vim: command not found 问题python:xpinyin 将中文汉字翻译成拼音Yii2 runAction 调用其他控制器方法及传递参数
博客信息

建站时间:2019年02月01日

文章统计:129篇文章

访问统计:1.4万次

微信公众号:扫描二维码,关注我们

主持博主

请留下赞助人姓名和联系人方式,以示感谢,如有需求,优先帮助。

您的支持是我们最大的动力!

支付宝微信

关于本站

写这个博客为了记录生活、学习中的点滴。希望大家多多支持!

本博客文章均为原创,转载请注明出处!

联系方式

拥抱代码 伤无痕

lavebaby_xw

huyashuai@foxmail.com

更多推荐

  • 网站首页
  • 日常笔记
  • 心情随笔
  • 关于本站
  • 网站邻居
  • 给我留言
伤无痕博客京ICP备19018814号-1Copyright © 2019