html

 <!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<form action="http://127.0.0.1/dopost" enctype="multipart/form-data" method="POST">
姓名:<input type="text" name="name"> 性别:
<input type="radio" name="gender" value="男">男<input type="radio" name="gender" value="女">女 年龄:
<input type="number" name="age"> 图片:
<input type="file" name="img">
<input type="submit" value="提交">
</form>
</body> </html>

js

 const http = require('http');
const formidable = require('formidable');
const util = require('util');
const fs = require('fs');
const path = require('path'); //创建服务器
const server = http.createServer(function (req, res) {
if (req.url == '/dopost' && req.method.toLowerCase() == 'post') {
// 插件- 请搜索:https://www.npmjs.com/package/formidable
let form = new formidable.IncomingForm(); //设置文件上传存放地址
form.uploadDir = './uploads';
// 设置文件上传大小(默认20M)
form.maxFileSize = 200 * 1024 * 1024;
//执行里面的回调函数的时候,表单已经全部接收完毕了。
form.parse(req, function (err, fields, files) {
// 时间戳
let timestamps = Math.round(new Date().getTime() / 1000).toString();
// 扩展名
let extname = path.extname(files.img.name);
// 旧路径
let oldPath = __dirname + '/' + files.img.path;
// 老文件名
let oldFileName = files.img.name;
// 新路径(默认无扩展名,需要引入path里面的得到extname得到)
let newPath = __dirname + '/uploads/' + getDate() + timestamps + extname;
// 新文件名
let newFileName = getDate() + random + extname; //改名api - http://nodejs.cn/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename(oldPath, newPath, function (err) {
if (err) throw Error('修改文件名失败!~');
console.log('修改前的文件名:', oldFileName, '修改后的文件名:', newFileName);
res.writeHead(200, { 'content-type': 'text/plain' });
res.end('成功!~');
});
});
}
}); // 日期方法.
function getDate() {
let date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
return year + '-' + month + '-' + day + '-'
} server.listen(80, '127.0.0.1');

node - 上传文件并且修改名称的更多相关文章

  1. node 上传文件 路径 重命名等问题

    最近在学习node,想做一个简单的网站.首先想到的是上传文件的功能,查了下,发现有一个formidable模块,操作方便,便拿来尝试了一下,结果很纠结. 下载安装的就不用说了,用npm即可.说一下,自 ...

  2. Struts2框架下的文件上传文件类型、名称约定

    Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...

  3. node 上传文件 http client to post file

    node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://i ...

  4. Django上传文件和修改date格式

    上传大文件的时候: 修改date数据:

  5. node上传文件并在网页中展示

    一.需求 1.当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 2.用户可以选择一个图片并提交表单,随后文件将被上传到http://domain/ ...

  6. js获取上传文件个数 以及名称

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. PHP上传文件限制修改

    php.ini里面查看如下行: upload_max_filesize post_max_size memory_limit

  8. IOS上传文件开发

    IOS上传文件开发     在移动应用开发  文件形式上传是不可缺少的,近期把IOS这块文件上传文件代码简单的整理一下.假设大家有须要安卓这边的代码,本人也能够分享给大家! QQ群:74432915 ...

  9. ThinkPHP3上传文件中遇到的问题

    在用ThinkPHP3上传图片的开发过程中遇到如下几个问题: 上传根目录不存在!请尝试手动创建:./Uploads/: 上传的图片,中文名称乱码: 上传文件时会自动生成一个以当前日期命名的文件夹,并将 ...

随机推荐

  1. Mysql大数据备份及恢复

    <p>[引自攀岩人生的博客]MySQL备份一般采取全库备份.日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日 ...

  2. Java中的抽象和封装

    一.面向对象和面向过程的区别 面向对象: 核心:封装了属性和方法的类,以数据为中心,实现了类级别的代码重用 面向对象因为采用了类,所以具有继承和多态特性,可以进一步重用代码和简化编程 面向过程: 核心 ...

  3. 我们曾经心碎的C#之 第三章.如何使用C#属性

    第三章 . 如何使用C#属性 1.Private访问修饰符   访问修饰符可以用来修饰类成员字段和方法,每个访问修饰符只能为紧随其后的成员指定特定的访问权限 如果将字段或方法声明为public 就表示 ...

  4. ie下,jquery为动态添加的节点添加事件,用live

    jQuery向动态生成的内容添加事件响应 jQuery live() 方法详解 [收藏] 发布时间:2013-07-24 点击次数:176 来源:www.daimajiayuan.com jQuery ...

  5. C++ string append()添加文本

    C++ string append()添加文本 1.  C++ string append()添加文本 使用append()添加文本常用方法: 直接添加另一个完整的字符串: 如str1.append( ...

  6. Video for Linux Two API Specification Revision 2.6.32【转】

    转自:https://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html Video for ...

  7. 从串口驱动的移植看linux2.6内核中的驱动模型 platform device & platform driver【转】

    转自:http://blog.csdn.net/bonnshore/article/details/7979705 写在前面的话: 博主新开了个人站点:你也可以在这里看到这篇文章,点击打开链接 本文是 ...

  8. PHP 时间获取本周 本月 本季度用法

    <?php        $week_begin = mktime(0, 0, 0,date("m"),date("d")-date("w&qu ...

  9. Django简单设置cookies和session

    一.Cookie cookie及特点 Cookie是由服务器(网站)生成的,存储在浏览器端的 键值对数据(通常经过加密) 在响应请求时,服务器会把生成 Cookie数据 发给浏览器,浏览器会自动保存( ...

  10. Delphi中的堆,栈

    来自:http://blog.163.com/liang_liu99/blog/static/884152162009111303756371/ --------------------------- ...