ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

node.js + express处理上传文件接口demo

2021-07-08 20:34:12  阅读:1160  来源: 互联网

标签:node req const demo require express multer any


在平时工作和自己写小项目时会遇到需要上传文件的场景,这里使用nodejs搭建服务端接口。

模块

const express = require('express');
const app = express();
const cors = require('cors');
const multer = require('multer');
const fs = require('fs');
  • multer是用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求
  • fs模块用于对系统文件及目录进行读写操作
  • cors用来处理带cookie的跨域请求

接口

const express = require('express');
const app = express();
const cors = require('cors');
const fs = require('fs');
const multer = require('multer');

// 引入multer
const upload = multer({
    dest: 'uploads/'
});

morgan.token('body', (req: { body: any; }) => {
    return JSON.stringify(req.body);
});

// 托管静态文件,并且加个前缀uploads,为了安全规范
app.use('/uploads', express.static(__dirname + '/uploads'));

// 处理带cookies的跨域请求
app.use(cors({credentials: true, origin: 'http://localhost:8080'}));

// 接口填写,上传文件类型为任何文件
app.post('/upload', upload.any(), async (req: any, res: any) => {
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
    console.log(req.files[0]);  // 上传的文件信息

	// 保存文件,或者做一些后续文件的处理
    var des_file = "./uploads/" + req.files[0].originalname;
    fs.readFile( req.files[0].path, (err: any, data: any) => {
        fs.writeFile(des_file, data,  (err: any) => {
            if(err){
                console.log(err);
            }else{
                const response = {
                    message: 'File uploaded successfully',
                    filename: req.files[0].originalname
                };
                res.end(JSON.stringify(response));
            }
        });
    });
})

在这里插入图片描述

标签:node,req,const,demo,require,express,multer,any
来源: https://blog.csdn.net/weixin_41935198/article/details/118581430

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有