node.js框架express文件上传操作

Posted 冉姑娘❤️

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js框架express文件上传操作相关的知识,希望对你有一定的参考价值。

1.创建upload.html文件

<form action=/upload method=post enctype=multipart/form-data>
    头像:<input type=file name=userImg/><br/>
    <input type=submit value=上传头像/>
    <!-- 
    使用file上传图片的注意事项:
        1. method上传方式必须是post
        2. enctype=multipart/form-data
    -->
</form>

2.创建处理文件upload.js

// 引入express
let express=require(express);
let app=new express();
// body-parser
let bodyParser=require(body-parser);
// 引入 formidable
let formidable=require(formidable);
// 文件操作
let fs=require(fs);
let path=require(path);

// 处理post数据的提交
app.use(bodyParser.urlencoded({extended:false})); 
// 配置静态资源路径
app.use(express.static(path.join(__dirname,upload)));

// 路由
// 访问 / ,跳转到upload.html
app.get(/,(req,res)=>{
    res.sendFile(__dirname+/3.upload.html);
})

// 处理post图片上传上来的数据
app.post(/upload,(req,res)=>{
    // 图片上传操作
    let form=new formidable.IncomingForm();
    form.parse(req,(err,files,file)=>{
        // console.log(files);
        // console.log(file);
        /* 1.上传[将图片从本地,上传到服务器]
        获取文件所在的位置 - 读取的管道流 - 管道流写的方式写进去 - 管道流
        */
        let read=fs.createReadStream(file.userImg.path);
        // 写入的时候,文件夹的名称如果不存在,则会写入失败了;需要手动创建
        let write=fs.createWriteStream(./upload/+file.userImg.name);
        read.pipe(write); // pipe 管道传输

        // 2.把图片的路径写入到 user-info 表中,数据库的更新操作

        // 3. 上传完成之后查看图片
        res.send(<img src="./+file.userImg.name+" width="200">); 
    })
})

// 设置端口
app.listen(8080);

3.访问测试

nodemon upload.js

这样就可以进行文件上传了,文件上传的时候是上传到服务器中,如果想要存在数据库中,只需要把文件的名称存在数据库中就可以了

 

以上是关于node.js框架express文件上传操作的主要内容,如果未能解决你的问题,请参考以下文章

Node.js与Express联合中间件express-fileupload使用axios实现文件上传

Node.js 文件上传(Express 4、MongoDB、GridFS、GridFS-Stream)

如何使用 node.js、Express 和 knox 将文件从浏览器上传到 Amazon S3? [关闭]

使用 Express 和 Node JS 在 MongoDB 中上传文本文件

无法使用 express 和 multer 运行 node.js 服务器以在节点中上传文件

Node.js 上传文件