Nodejs开发技巧集锦(4):使用multiparty获取上传的表单文件

2023-12-28 03:58

本文主要是介绍Nodejs开发技巧集锦(4):使用multiparty获取上传的表单文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、安装multiparty

cnpm install multiparty --save

2、引入

var multiparty = require('multiparty');
var fs = require('fs'); //文件模块

3、表格一定要含有enctype="multipart/form-data"

<form action="/doProductAdd" method="post" enctype="multipart/form-data">商品名称: <input type="text" name="title"/>商品图片: <input type="file" name="pic"/>   
</form>

4、获取普通表单值和文件

    app.use('/upload',express.static('upload'));//设置虚拟静态目录var form = new multiparty.Form();//实例化表单form.uploadDir='upload';//定义上传路径为根目录/uploadform.parse(req, function (err, fields, files) {var title = fields.title[0];var pic = files.pic[0].path;//...将文件路径和标题存入数据库});

说明:实际开发中,我们经常会更换商品的图片,

1、如果用户没有更换图片,那么multiparty会自动为我们上传一个空的无效文件,我们需要将这个无效文件删除。

2、如果用户更换图片,我们需要将以前的文件删除

app.post('/doProductEdit',function (req, res) {var form = new multiparty.Form();form.uploadDir='upload';form.parse(req, function (err, fields, files) {var _id = fields._id[0];var title = fields.title[0];var pic = files.pic[0].path;//上传则有原始路径,没上传则有一个无效文件的路径//上传则原始文件不为空,没上传则为空,可以此判断用户是否更换图片var originalFileName = files.pic[0].originalFilename;//如果不为空:说明用户上传了图片,那么需要更新pic字段if(originalFileName){var setData = {title,pic}}else{//如果为空:说明用户没有上传图片,那么不需要更新pic字段var setData = {title,};//即使没有上传图片。系统会自动上传一个无效文件,因此删除fs.unlink(pic,function () {});}});
});

 

这篇关于Nodejs开发技巧集锦(4):使用multiparty获取上传的表单文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/545015

相关文章

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分