文档章节

node - 上传文件并且修改名称

o
 osc_1ee7cxmx
发布于 2018/08/06 16:59
字数 426
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9 </head>
10 
11 <body>
12     <form action="http://127.0.0.1/dopost" enctype="multipart/form-data" method="POST">
13         姓名:<input type="text" name="name"> 性别:
14         <input type="radio" name="gender" value="男"><input type="radio" name="gender" value="女">女 年龄:
15         <input type="number" name="age"> 图片:
16         <input type="file" name="img">
17         <input type="submit" value="提交">
18     </form>
19 </body>
20 
21 </html>

 

js

 

 1 const http = require('http');
 2 const formidable = require('formidable');
 3 const util = require('util');
 4 const fs = require('fs');
 5 const path = require('path');
 6 
 7 
 8 //创建服务器
 9 const server = http.createServer(function (req, res) {
10     if (req.url == '/dopost' && req.method.toLowerCase() == 'post') {
11         // 插件- 请搜索:https://www.npmjs.com/package/formidable
12         let form = new formidable.IncomingForm();
13 
14         //设置文件上传存放地址
15         form.uploadDir = './uploads';
16         // 设置文件上传大小(默认20M)
17         form.maxFileSize = 200 * 1024 * 1024;
18         //执行里面的回调函数的时候,表单已经全部接收完毕了。
19         form.parse(req, function (err, fields, files) {
20             // 时间戳
21             let timestamps = Math.round(new Date().getTime() / 1000).toString();
22             // 扩展名
23             let extname = path.extname(files.img.name);
24             // 旧路径
25             let oldPath = __dirname + '/' + files.img.path;
26             // 老文件名
27             let oldFileName = files.img.name;
28             // 新路径(默认无扩展名,需要引入path里面的得到extname得到)
29             let newPath = __dirname + '/uploads/' + getDate() + timestamps + extname;
30             // 新文件名
31             let newFileName = getDate() + random + extname;
32 
33             //改名api - http://nodejs.cn/api/fs.html#fs_fs_rename_oldpath_newpath_callback
34             fs.rename(oldPath, newPath, function (err) {
35                 if (err) throw Error('修改文件名失败!~');
36                 console.log('修改前的文件名:', oldFileName, '修改后的文件名:', newFileName);
37                 res.writeHead(200, { 'content-type': 'text/plain' });
38                 res.end('成功!~');
39             });
40         });
41     }
42 });
43 
44 
45 // 日期方法.
46 function getDate() {
47     let date = new Date();
48     let year = date.getFullYear();
49     let month = date.getMonth() + 1;
50     let day = date.getDate();
51     return year + '-' + month + '-' + day + '-'
52 }
53 
54 server.listen(80, '127.0.0.1');

 

上一篇: BZOJ4987 Tree
下一篇: codeforces727C(交互)
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Saga分布式事务框架

1优点 1、避免服务之间的循环依赖,因为saga协调器会调用saga参与者,但参与者不会调用协调器 2、集中分布式事务编排 3、降低参与者的复杂性 4、回滚更容易管理 Saga模式的一大优势是它支持长...

战略板儿砖
今天
11
0
为什么要使用static_cast (x)而不是(int)x? - Why use static_cast(x) instead of (int)x?

问题: I've heard that the static_cast function should be preferred to C-style or simple function-style casting. 我听说static_cast函数应该比C样式或简单的函数样式转换更可取。 Is......

fyin1314
今天
18
0
最难的几道Java面试题,看看你跪在第几个?

这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但...

码农突围
今天
20
0
浅谈Spring核心技术 IOC与AOP

IOC: IOC(Inversion Of Controll,控制反转)是一种设计思想,将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个M...

创业789
今天
13
0
智能金融丨神州信息助某省联社实现一体化智能运维建设

近日,由神州信息实施的某省联社“IT服务管理平台项目”顺利通过验收,并获得客户的高度认可。该项目是神州信息在农信领域打造的又一标杆项目,为客户实现了IT运维流程标准化及运维系统一体化...

脉脉小达人
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部