node - 上传文件并且修改名称
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 - 上传文件并且修改名称的更多相关文章
- node 上传文件 路径 重命名等问题
最近在学习node,想做一个简单的网站.首先想到的是上传文件的功能,查了下,发现有一个formidable模块,操作方便,便拿来尝试了一下,结果很纠结. 下载安装的就不用说了,用npm即可.说一下,自 ...
- Struts2框架下的文件上传文件类型、名称约定
Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...
- node 上传文件 http client to post file
node做http client 发送post数据是很容易的事情,但要上传文件就不是太容易了主要是因为上传文件的报文和普通post是不太一样的 要了解http post可以看下这个 https://i ...
- Django上传文件和修改date格式
上传大文件的时候: 修改date数据:
- node上传文件并在网页中展示
一.需求 1.当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 2.用户可以选择一个图片并提交表单,随后文件将被上传到http://domain/ ...
- js获取上传文件个数 以及名称
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- PHP上传文件限制修改
php.ini里面查看如下行: upload_max_filesize post_max_size memory_limit
- IOS上传文件开发
IOS上传文件开发 在移动应用开发 文件形式上传是不可缺少的,近期把IOS这块文件上传文件代码简单的整理一下.假设大家有须要安卓这边的代码,本人也能够分享给大家! QQ群:74432915 ...
- ThinkPHP3上传文件中遇到的问题
在用ThinkPHP3上传图片的开发过程中遇到如下几个问题: 上传根目录不存在!请尝试手动创建:./Uploads/: 上传的图片,中文名称乱码: 上传文件时会自动生成一个以当前日期命名的文件夹,并将 ...
随机推荐
- 浅谈_IDEA导入Eclipse的Web项目
相信很多同学在工作中都会遇到将一个Eclipse的Web项目导入IDEA的情景,这里浅谈一下具体的操作流程 一:Import Project,选择要导入的项目 二:选择以Eclipse模型的方式导入 ...
- OPENCV mat类
OpenCV参考手册之Mat类详解 目标 我们有多种方法可以获得从现实世界的数字图像:数码相机.扫描仪.计算机体层摄影或磁共振成像就是其中的几种.在每种情况下我们(人类)看到了什么是图像.但是,转换图 ...
- 分享C# GC 非原创
一. 托管资源的分配 CLR在运行时管理着一段内存地址空间(虚拟地址空间,在运行中会映射到物理内存地址中),分为“托管堆”和“栈”两部分,栈用于存储值类型数据,它会在方法执行结束后自动销毁其中引用的值 ...
- 使用srvany.exe把程序安装成windows服务
srvany.exe介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说srva ...
- python登陆github
#!/usr/bin/env python # encoding: utf-8 import requests from headers import headers from lxml import ...
- ScrollView下嵌套GridView或ListView默认不在顶部的解决方法
自定义ScrollView重写下面的方法 /* ScrollView下嵌套GridView或ListView默认不在顶部的解决方法*/ @Override protected int computeS ...
- cp2102通过GPIO连接树莓派
此博客不在更新,我的博客新地址:www.liuquanhao.com ----------------------------------------------------------------- ...
- python爬虫beautifulsoup4系列4-子节点【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/beautifulsoup4/ 前言 很多时候我们无法直接定位到某个元素,我们可以先定位 ...
- Netty源码学习(三)NioEventLoop
0. NioEventLoop简介 NioEventLoop如同它的名字,它是一个无限循环(Loop),在循环中不断处理接收到的事件(Event) 在Reactor模型中,NioEventLoop就是 ...
- UVA 1395 Slim Span 最小生成树
题意: 给你一个图,让你求这个图中所有生成树中满足题目条件的,这个条件是生成树中最长边与最短边的差值最小. 思路: 根据最小瓶颈生成树的定义:在一个有权值的无向图中,求一个生成树最大边的权值尽量小.首 ...