猿记录

一个记录、分享的博客

您的位置:主页 > 技术专栏 > node >

think 上传图片

2018-08-30 16:18:26 作者:yxl 次阅读 node

1、thinkjs 配合layui的upload模块

js

 var uploadInst = upload.render({
                elem: '#upload' //绑定元素
                    ,
                url: '/admin/article/upload' //上传接口
                    ,
                done: function(res) {
                    console.log(res);
                    if (res.errno == 0) {
                    
                    }
                },
                error: function() {
                    //请求异常回调
                }
            });

2、后端处理

 async uploadAction() {
        let themefile = this.file('file');
        let filename = themefile.name;
        let suffix = filename.substr(filename.lastIndexOf('.') + 1); //获取图片后缀名
        let imgSrc = +new Date() + '.' + suffix;
        let filepath = themefile.path;
        let uploadpath = think.ROOT_PATH + '/www/static/upload';
        think.mkdir(uploadpath); //创建该目录
        //读文件
        let datas = fs.readFileSync(filepath);
        //写文件
        try {
            fs.writeFileSync(uploadpath + '/' + imgSrc, datas);
            return this.success({ imgsrc: imgSrc }, '上传成功')
        } catch (e) {
            return this.fail('上传失败')
        }
    }

// 图片上传 第二种方法

  async postAction() {
    const file = this.file('image');
    if (!file) {
      return this.fail(1000, '请上传文件');
    }
    // path.extname获取文件后缀名,可做上传控制
    const extname = path.extname(file.name);
    const filename = path.basename(file.path);
    const basename = think.md5(filename) + extname;
    const date = new Date();
    const year = date.getFullYear();
    const month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
    const savepath = '/uploads/' + year + '/' + month + '/' + basename;
    const filepath = path.join(think.ROOT_PATH, 'www' + savepath);
    think.mkdir(path.dirname(filepath));
    rename(file.path, filepath);
    let data={ url: savepath, basename:basename, filepath:filepath};
    await this.hook('upload',data);
    delete data.filepath;
    return this.success(data, '上传成功');
  }


凡本站注明“本站”或“投稿”的所有文章,版权均属于本站或投稿人,未经本站授权不得转载、摘编或利用其它方式使用上述作品。

编辑:yxl 关键词: think layui
0

网友评论