node进阶| 解决表单enctype=multipart/form-data 时获取不到Input值的问题

今天在学习node踩到一个坑:form设置enctype="multipart/form-data"上传文件时,无法获取到表单其他input的值。

因为之前上传文件用的是 formidable 

方法1:formidable (无法获取其他input的值)

引包 app.js

var app = express();
var express = require("express");
var router = require("./controller"); //前端MVC的C 一个顶层变量

 

controller/package.json

{"main" :"router.js"
}

POST请求 app.js:

app.post("/file_upload",router.uploadfile);

controller/router:

exports.uploadfile=function(req,res){// console.log(req.route);var form = new formidable.IncomingForm();form.encoding = 'utf-8';  form.uploadDir = "./uploads"; //上传路径form.parse(req, function(err, fields, files) { // 表单上传到东西在fields 文件在files里面//更改文件名var timeStr = (Math.floor(Math.random()*9000+1000)).toString();var d = sd.format(new Date(),'YYYYMMDDHHmmss'+timeStr);var folder = fields.folder;var extname = path.extname(files.file.name); //文件类型var oldName = files.file.path;var newName = "./public/image/"+folder+"/"+d + extname;console.log(newName);console.log(folder);fs.rename(oldName,newName);//成功页res.send("<a href = '/'>返回</a>");});}

views/up.ejs

<form style="width:40%;" method="post" action="/file_upload" enctype="multipart/form-data"><input type="file" id="exampleInputFile"  name="file"><input type="submit" class="btn btn-default">上传</input>
</form>

但是这种方法无法获取到form表单其他input的值

方法2:multer(可以获取)

引包 app.js

var express = require('express');
var path = require('path');
var index = require('./routes/index');
var fs = require('fs');
var multer = require('multer');

app.js

app.use('/', index);
var storage = multer.diskStorage({destination: function (req, file, cb) {cb(null, './uploads')  //设定文件上传路径}, //给上传文件重命名,获取添加后缀名filename: function (req, file, cb) {console.log(file.originalname) //上传文件的名字console.log(file.mimetype)    //上传文件的类型console.log(file.fieldname) // 上传文件的Input的name名console.log(file.encoding)    // 编码方式var fileFormat = (file.originalname).split("."); //采用分割字符串,来获取文件类型console.log(fileFormat)var extname = path.extname(file.originalname); //path下自带方法去获取文件类型console.log(extname);// cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]); //更改名字cb(null, file.fieldname + '-' + Date.now() +  extname); //更改名字}});
var upload = multer ({storage:storage}) //定制化上传参数
app.post('/upload', upload.array('logo',2), function(req, res, next){console.log(req.body.txt)res.send({ret_code: '0'});
});

views/index.ejs

    <form action="/upload" method="post" enctype="multipart/form-data"><h2>单图上传</h2><input type="file" name="logo"><input type="file" name="logo"><input type="text" name="txt"><input type="submit" value="提交"></form>

 

multer包成功解决了无法获取到表单其他input的值的问题。

 

转载于:https://www.cnblogs.com/dirkhe/p/7354886.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

错误异常处理 小数格式化,取证与四舍五入 random处理 日期与时间常用操作

异常处理 文章目录异常处理语法错误语义错误逻辑错误异常处理finallytryecceptfinallyraise测试unittest测试组织代码常用断言方法是否正确存在约等于判断是否应用判断是否为空判断是否为某型实例判断大于类与测试装置setup函数teardown函数小数格式化&#xff0c;取证与四舍五…

什么是内存泄漏?

在wikipedia这样解读内存泄漏的&#xff1a;在计算机科学中&#xff0c;内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内存之前就…

python cx_oracle配置_python连接oracle的模块cx_Oracle安装和配置

下载相应版本的cx_Oracle安装cx_Oracle-5.1.2-11g-py24-1.x86_64.rpm&#xff0c;其他版本类似&#xff0c;rpm -ivh cx_Oracle-5.1.2-11g-py24-1.x86_64.rpm安装简单&#xff0c;但需要配置下面的环境变量和软连接在/etc/profile,添加export LD_LIBRARY_PATH/usr/lib/oracle/…

requests库之处理响应

response对象&#xff1a; http状态码 利用response把流存储成图片或者文件 一个下载图片的实例 import requestsdef download_pic():#headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36…

持久化概述

持久化概述 文章目录持久化概述对象持久化扁平文件pickleshelve数据库ORM扁平文件保留类型还原eval字符串转列表&#xff08;不带&#xff0c;&#xff09;![](https://img-blog.csdnimg.cn/20200201211443931.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,sha…

五分钟读懂TCP 协议

TCP 是互联网核心协议之一&#xff0c;本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层&#xff0c;有着自己的分工。&#xff08;图片说明&#xff1a;TCP 是以太网协议和 IP 协议的上层协议&#xff0c;也是应用层协议的下层协议。&…

git原理浅析及命令介绍

状态描写叙述 请记住&#xff0c;工作文件夹以下的全部文件都不外乎这两种状态&#xff1a;已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本号控制管理的文件&#xff0c;在上次快照中有它们的记录&#xff0c;工作一段时间后&#xff0c;它们的状态可能是未更新。已改动或者…

python怎么跳转到某一行代码_Python中免验证跳转到内容页的实例代码

在本篇文章里小编给大家整理的是一篇关于Python中免验证跳转到内容页的实例代码&#xff0c;有兴趣的朋友们可以学习分享下。相信很多人在浏览网页时&#xff0c;经常会碰到需要输入验证码才可以继续浏览的情况吧&#xff0c;遇到这种问题&#xff0c;大多数人只能进行繁琐的注…

正则表达

文章目录正则表达数据验证字面值\d查数字^\w特殊符号匹配规则.除|n所有字符\d查数字\D非数字![在这里插入图片描述](https://img-blog.csdnimg.cn/20200203213049246.png)\s空白字符![在这里插入图片描述](https://img-blog.csdnimg.cn/20200203213145246.png)\S非空白字符![在…

《从三月开始……》

很多时候&#xff0c;我们对不同现状有所不满——对无法冲破的工作瓶颈不满对久不增长的收入不满对久不下降的体重不满对无法提高的学分不满对没有进展的关系不满……似乎总有某个方面的不顺给我们带来烦恼为此&#xff0c;我们也做了“努力”——我们通过各种渠道和平台去查阅…

Thread.join()

1.join() join()的作用是&#xff1a;“等待该线程终止”&#xff0c;这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码&#xff0c;只有等到子线程结束了才能执行。 主线程生成并起动了子线程&#xff0c;而子线程里要进行大…

管理系统制作的python代码_python学生管理系统代码实现

本文实例为大家分享了python学生管理系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下类class Student:stuID ""name ""sex "M"classID "NULL"#set IDdef setStuID(self,stuID):self.stuID stuIDdef setName(self,…

从未知到2019年的文章汇总

2018年下半年我正式把这个遗弃了很久的微信号运营起来&#xff0c;2019年应该是比较正式的一年&#xff0c;也是成长最快的一年。从开始捣鼓微信公众号到现在&#xff0c;我写了很多东西。这篇文章把之前写过的&#xff0c;不管是好的&#xff0c;还是不好的&#xff0c;都整理…

python modbus控制plc_python Modbus基础

modbus 协议 数据格式00 00 00 00 00 06 01 03 00 00 00 02 ascii码第一位&#xff1a;事务处理标识符 由服务器复制&#xff0c;通常为0第二位&#xff1a;事务处理标识符 由服务器复制&#xff0c;通常为0第三位&#xff1a;协议标识符0第四位&#xff1a;协议标识符0第五…

Binder远程转本地

前言在[031]Binder线程栈复用中&#xff0c;我们说到Binder驱动通过“线程栈复用”减少线程数&#xff0c;我们来讲一讲另外一个机制“远程转本地”&#xff0c;将远程Binder调用转化成本地方法调用。一、写个Demointerface IServiceB {void sendMsg(String msg); }1.1 Client…

linux这样去掉文件里高亮字体

终端输入&#xff1a;noh转载于:https://www.cnblogs.com/S--S/p/7365407.html

pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

1. SRCNN1.1. Contributionend-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 )。指出了超分辨方向上传统方法( sparse-coding-based SR methods )与深度学习方法的关系&#xff0c;insightful 。SRCNN网络非常简单&#xff0c;PSNR、SSIM 等却有小幅提升…

5类主题词汇(2)

社会热点 信息科技 cyber 网络 telecommunication电讯 network网络 website 网站 blog 博客 access接近 进入 profile概况 简介 database数据库 digital数字的 数码的 keyboard键盘 hardware硬件 software软件 application程序 surf冲浪 surf on the internet 网上冲浪 chat …

存储对手机性能的影响

前言几年以前&#xff0c;我被派去厦门上门去分析一个用户的手机卡顿问题&#xff0c;该用户的手机经常莫名无响应&#xff0c;刷机&#xff0c;恢复出厂都没有用&#xff0c;经过一通分析&#xff0c;原来该用户从熟人店里买到了一张盗版的SD卡&#xff08;这年头坑的就是朋友…

python周末吃什么_中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!

分析url的网页源代码&#xff0c;在源代码里有我们想要的评论数据&#xff0c;我们可以用正则(在这里正则还是比较好用的)把我们想要的信息弄下来开启循环&#xff0c;批量抓取保存数据至文本和数据库defparse_one_page(html):pattern2 re.compile( "m_type":"…