formidable ajax,nodejs formidable混合表单提交

废话不多说,直接上代码:

前端页面:

信息:

Welcome to

<%=%20locals.imginfo%20%>

后端处理:

//formidable

router.get('/formidable', function(req, res, next) {

res.render('formidable', {

title: 'formidable'

});

});

router.post('/file-upload', function(req, res, next) {

console.log('开始文件上传....');

var form = new formidable.IncomingForm();

//设置编辑

form.encoding = 'utf-8';

//设置文件存储路径

form.uploadDir = "./public/images/";

//保留后缀

form.keepExtensions = true;

//设置单文件大小限制

form.maxFieldsSize = 2 * 1024 * 1024;

//form.maxFields = 1000; 设置所以文件的大小总和

form.parse(req, function(err, fields, files) {

//console.log(fields);

// var originName=files.thumbnail.name;

console.log(files.thumbnail.path);

console.log('文件名:' + files.thumbnail.name);

//随机文件名调用

var t = (new Date()).getTime();

//生成随机数

var ran = parseInt(Math.random() * 8999 + 10000);

//拿到扩展名

var extname = path.extname(files.thumbnail.name);

var username = fields.username;

var password = fields.password;

//文本测试

console.log('name:' + username);

console.log('pass:' + password);

var oldpath = path.normalize(files.thumbnail.path);

//新的路径

//随机文件名调用

// let newfilename=t+ran+extname;

var newfilename = files.thumbnail.name;

//插入数据库

var img = new Img({

username: username,

newfilename: newfilename

})

img.save(function(err) {

if(err) {

console.log(err);

//res.send(400);

} else {

console.log("信息提交成功!");

res.render('formidable', { title: '文件上传成功:', imginfo: newfilename,name:username

});

}

});

var newpath = './public/images/' + newfilename;

console.warn('oldpath:' + oldpath + ' newpath:' + newpath);

fs.rename(oldpath, newpath, function(err) {

if(err) {

console.error("改名失败" + err);

}

//随机文件名调用

//res.render('formidable', { title: '文件上传成功:', imginfo: newfilename,name:username});

//原文件名

//res.render('formidable', { title: '文件上传成功:', imginfo: originName,name:username});

});

//res.end(util.inspect({fields: fields, files: files}));

});

});

nodejs学习之表单提交&lpar;1&rpar;

nodejs作为一门后端语言,接触的最多的是它的框架,但是它本身的api我觉得更是非学不可,所有才有了这篇文章 表单提交是最基本的也是最实用的入门实例 HTML: ...

php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

如何用elementui去实现图片上传和表单提交,用axios的post方法

下面是在vue搭建的脚手架项目中的组件component文件夹下面的upload.vue文件中的内容 & ...

混合表单文件上传到数据库(基于TOMCAT)

在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,就像混合表单在上传完毕之后需要将提交的基本信息插入数据库. 在这个demo中需要用到这个架包来帮助实现 1.定义一个公共类实现文件上 ...

node07---post请求、表单提交、文件上传

golang-web框架revel一个表单提交的总结

这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么 ...

关于我们经常用到的form表单提交

工作中遇到了太多太多的表单提交问题,曾经学过一个HTML的表单提交给 另外一个HTML页面,对于后台怎么获取有点想不起来了. 今天便做了几个实验,提交订单到后台,来掩饰后台如何接受表单内容: 实验 一 ...

随机推荐

python os&period;path&period;dirname 是什么目录

这个获取文件路径中所在的目录. 1 2 3 4 5 6 7 In [1]: import os   In [2]: os.__file__ Out[2]: '/usr/lib/python2.7/os ...

Monitor traffic to localhost from IE or &period;NET

原文:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/MonitorLocalTraffic Monitor traffic to lo ...

让我们写的程序生成单个的exe文件(C&num;winform程序举例)

一准备: 首先你要有自己写好的代码程序 然后你需要在百度搜索Enigma Virtual Box 6.90并下载,运行后可看到如何的界面 注意:首次启动是英文的,更改语言后再次启动就是中文了. 二制作 ...

java中字节流和字符流的区别

流分类: 1.Java的字节流   InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先.2.Java的字符流  Reader是所有读取字符串输入流的祖先,而 ...

jQuery 中的事件绑定与取消绑定

1:在jQuery中使用bind方法进行事件的绑定,bind方法有两个参数,第一个参数是事件的类型例如click,change,keyup,keydown,blur,focus等.第二个参数是一个回调 ...

清华集训2014 day2 task1 简单回路

题目 如题. 算法 就是刚学习的插头DP. 从前往后和从后往前分别进行一次DP. 要点 合法的括号序列只有103个 如何合并两次dp的信息 一开始犯傻了,以为当且仅当两个轮廓线的状态相同才是合法的方案 ...

&lbrack;转&rsqb;解决LinearLayout中控件不能居右对齐

在LinearLayout布局时使用右对齐(android:layout_gravity="right")控件对齐方式不生效,需要设置 android:layout_weight= ...

【2&period;0新特性】Spring Boot 2&period;0新特性

以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...

Error running app&colon; Default Activity not found &semi; 安卓程序运行不了,也不报错。

我最近copy一个工程,写完了去运行时不能运行,项目不报错,就是运行的地方有个叉号:尝试很多办法后准备重新New一个时发现:"10:17 Error running app: Default ...

Java的MD5加密和解密

链接:http://www.cnblogs.com/android-blogs/p/5305598.html Java的MD5加密和解密 简单demo: import  java.security.* ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`formidable` 是一个 Node.js 模块,用于解析 HTTP 请求中的表单数据,支持文件上传。它可以将表单数据解析为可读流或者对象,非常适合处理大文件上传和表单数据解析。 `formidable` 的主要特点如下: - 可处理普通表单字段和上传文件。 - 可将表单数据解析为对象或可读流。 - 可设置上传文件的最大大小和上传目录等参数。 - 支持自定义上传文件的命名和存储路径。 - 支持自定义解析器,可处理非标准的表单数据格式。 - 支持流式处理大文件上传,不会占用过多内存。 使用 `formidable` 模块非常简单,只需要通过 `require('formidable')` 引入模块,然后创建一个 `Formidable` 实例,调用 `parse()` 方法解析表单数据即可。通常情况下,我们会将 `Formidable` 实例放在 HTTP 服务器的请求处理函数中,以便处理客户端提交的表单数据。 下面是一个使用 `formidable` 模块处理文件上传的示例代码: ```javascript const http = require('http'); const formidable = require('formidable'); const fs = require('fs'); http.createServer((req, res) => { if (req.url === '/upload' && req.method.toLowerCase() === 'post') { const form = new formidable.IncomingForm({ uploadDir: './uploads', // 上传文件保存的目录 keepExtensions: true, // 是否保留上传文件的扩展名 maxFileSize: 2 * 1024 * 1024, // 上传文件大小限制,单位为字节 }); form.parse(req, (err, fields, files) => { if (err) { console.error(err); res.statusCode = 500; res.end('Internal Server Error'); return; } // 处理上传的文件 const { file } = files; const { path, name } = file; const newPath = `${form.uploadDir}/${name}`; fs.rename(path, newPath, (err) => { if (err) { console.error(err); res.statusCode = 500; res.end('Internal Server Error'); return; } res.statusCode = 200; res.end('File uploaded successfully'); }); }); } else { res.statusCode = 404; res.end('Not Found'); } }).listen(8080); ``` 在上面的示例代码中,我们使用 `formidable` 模块处理客户端上传的文件,并将上传的文件保存到指定的目录中。在 `IncomingForm` 构造函数中,我们可以设置上传文件的参数,如上传目录、是否保留扩展名、上传文件大小限制等。在 `parse()` 方法回调函数中,我们处理上传的文件,将其重命名并保存到指定的目录中。最后,我们向客户端发送上传成功的响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值