文件上传

formidable

multer

npm i formidable multer

如何使用见: https://www.npmjs.com/

util.inspect 自己查

文件上传:表单必须有2个东西

1、enctyp="multipart/form-data"

2、method="post"

文件下载:

res.download(__filename);

formidable

server1.js
var http = require("http");
var formidable = require("formidable");
var fs = require("fs");
var path = require("path"); http.createServer(function(req,res){ console.log(req.url);
if(req.url == "/upload"){
var form = new formidable.IncomingForm();
form.uploadDir = "upload";
form.parse(req, function(err, fields, files) { console.log(fields, files); var oFile = files.f1; var oldPath = oFile.path; var newName = oldPath + oFile.name;
fs.rename(oldPath,newName,function(err){
res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});//设置response编码为utf-8
if(err){
res.end("上传失败");
} else {
res.end("上传成功");
}
}); });
} }).listen(9000);
form.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head> <body>
<form action="http://localhost:9000/upload" enctype="multipart/form-data" method="post">
<input type="text" name="user" value="aaa" /> <br /><br />
<input type="file" name="f1" value="" /> <br /><br />
<input type="submit"/>
</form>
</body>
</html>

res:

$ node server
/upload
{ user: 'aaa' } { f1:
File {
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
size: 5,
path: 'upload\\upload_df6a908be04c7a08d5406784cfbcb468',
name: 'test.txt',
type: 'text/plain',
hash: null,
lastModifiedDate: 2018-07-13T12:55:25.753Z,
_writeStream:
WriteStream {
_writableState: [Object],
writable: false,
domain: null,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
path: 'upload\\upload_df6a908be04c7a08d5406784cfbcb468',
fd: null,
flags: 'w',
mode: 438,
start: undefined,
autoClose: true,
pos: undefined,
bytesWritten: 5,
closed: true } } }

server.js
var express = require("express");
var multer = require("multer");
var fs = require("fs"); var app = express(); app.listen(9000); app.use(express.static("www"));
app.use(express.urlencoded({extended:false})); //文件上传中间件 var multerMiddleware = multer().any();
app.use(multerMiddleware); app.use("/upload",function(req,res){ console.log(req.files); var oFile = req.files[0]; var path = "upload/"+ oFile.originalname;
var buf = oFile.buffer;
fs.writeFileSync(path,buf); });

res:

$ node server2
[ { fieldname: 'f1',
originalname: 'test.txt',
encoding: '7bit',
mimetype: 'text/plain',
buffer: <Buffer 36 36 36 36 36>,
size: 5 } ]

文件下载download
var express = require("express");

var app = express();

app.listen(9000);

app.use("/download",function(req,res){

	res.download(__filename);//下载自己
});

res:

db数据库

mysql与 mongodb

1.mysql

npm i mysql 驱动

连接数据库

var db = mysql.createConnection({
host,user,password,database
});

操作数据库:

db.query(sql,fn(err,data){...});

关闭数据库:

db.end(); 不是close();

//查询

select * from user_table;

select * from user_table where username="aaa" and password="123";

插入

insert into user_table(username,password) values("aaa","123");


2.mongodb
     mysql            mongodb —— json

    关系型数据库     非关系型数据库

库   database         database

表    table          collection集合

行    row            document文档

列    col            field属性

安装目录: C:\Program Files\MongoDB\Server\3.3\bin

mongod 服务器端

mongo 客户端

配置环境变量:

;C:\Program Files\MongoDB\Server\3.3\bin

执行:

mongod --dbpath C:\data\db  默认的配置  以后启动 mogod

mongod --dbpath C:\mongoData 每次启动服务器必须带上完整路径

常用命令:

show dbs显示所有数据 —— 只显示有数据的库名称 show databases

db 查看用户当前所在的数据库

use 切换数据库、创建数据库

插入数据

db.user.insert({a:1}); 包括创建表 和 插入数据

db.user.insertOne( { x: 1 } );

db.user.find();

db.user.find({x:1});

select * from user_table where x="1"

use 20180713

db.user_table.insert({username:"aaa",password:"123",age:1});

db.user_table.insert({username:"aaa1",password:"123",age:18});

db.user_table.insert({username:"aaa2",password:"123",age:30});

db.user_table.insert({username:"aaa3",password:"123",age:60});

db.user_table.find({},{username:0/1,"_id":0});

select password from user_table

db.getCollection("user_table").find();

db.user_table.find().pretty() 美化json

show collections 查询当前库里面所有的表

db.user_table.find( { age: { $gt: 18 } } ,{"_id":0}) >

db.user_table.find( { age: { $gte: 18 } } ,{"_id":0}) >=

db.user_table.find( { age: { $lt: 18 } } ,{"_id":0}) <

db.user_table.find( { age: { $lte: 18 } } ,{"_id":0}) <=

db.user_table.find( {age:{ $gt: 18, $lt: 60 }},{"_id":0}) >18 <60

db.user_table.find({},{"_id":0}).sort( { age: -1 } ); 1 -1

1 :降序 desc

-1:升序 asc

db.user_table.find({},{"_id":0}).limit(2)

db.user_table.find({},{"_id":0}).limit(2).skip(0)

limit(pageSize).skip(beginIndex);

beginIndex = pageSize*(pageNo-1)

pageSize 2条

pageNo   beginIndex
1 0
2 2
3 4
4 6

11条数据 每页2条 一共几页? Math.ceil(total/pageSize);

db.user_table.count();


db.collection.insert()

db.collection.insertOne() 同 insert

db.collection.insertMany([ <document 1> , <document 2>, ... ])

db.user_table.insertMany([
{username:"xxx1",password"xxx1",age:1},
{username:"xxx2",password"xxx2",age:2},
{username:"xxx3",password"xxx3",age:3}
]);
db.user_table.insertMany([
{username:"xxx1",password:"xxx1",age:1},
{username:"xxx2",password:"xxx2",age:2},
{username:"xxx3",password:"xxx3",age:3}
]);
db.user_table.insert([
{username:"xxx11",password:"xxx1",age:1},
{username:"xxx22",password:"xxx2",age:2},
{username:"xxx33",password:"xxx3",age:3}
]);

update
$set:修改或者添加
db.user_table.update(
{ username: "aaa" },
{
$set: {username: "AAA", password: "AAA",age: 100}
}
) db.user_table.update( { username: "AAA" }, { $unset: { password: 1 } } )
$unset 删除属性 db.user_table.find({},{"_id":0}); db.user_table.update(
{ username: "aaa1" },
{ $set: { username : "AAA1" } },
{ multi: true} 可以修改多条数据 默认是false
) db.user_table.updateOne(
{ username: "aaa3" },
{ $set: { username : "AAA3" } }
);
db.user_table.updateMany(
{ username: "aaa2" },
{ $set: { username : "AAA2" } }
);

删除 没有delete 用remove

db.user_table.deleteOne( { "_id" : ObjectId("5b48548b86ffbcc901fc4ac2") } );

db.user_table.deleteOne( { "age" : {$gte:1}} );

db.user_table.deleteMany( { "age" : {$gte:1}} );

db.user_table.remove( { "age" : {$gte:1}} );

db.user_table.remove( { "age" : {$gte:1}},{justOne:true} );

justOne:true 只删除一条 默认false删除所有


注意:必须在cmd环境下运行

https://stackoverflow.com/questions/47282119/mongo-export-syntaxerror-missing-before-statement-shell114

导入数据:

mongoimport --db 20180713 --collection user_table --drop --file xxx.txt

导出数据

mongoexport --db 20180713 --collection user_table --out xxx.txt

xxx.txt
{username:"xxx1",password:"xxx1",age:1}
{username:"xxx2",password:"xxx2",age:2}
{username:"xxx3",password:"xxx3",age:3}

mongodb&& node

npm i mongodb

使用方法:https://www.npmjs.com/package/mongodb


mongodb浏览器的可视化

adminMongo https://github.com/mrvautin/adminMongo


mongoose:

mongodb/mongoose

DOM 文档对象模型

ODM 对象文档模型

npm i mongoose

https://www.npmjs.com/package/mongoose

http://mongoosejs.com/


db.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/20180716'); //定义表结构的数据类型
var userSchema = new Schema({
user:String,
pass:String
});
//定义表 表结构都会带s,只能有一个s 控制台查询:db.user_tables.find();
var UserModel = mongoose.model('user_table', userSchema); //创建数据 行 document
var oUser = new UserModel({user:"bbb"});
oUser.pass = "123"; //db.user_table.insert(document);
//插入
oUser.save(function (err, result) {
console.log(err, result);
//查询
//find
UserModel.find(function (err, data) {
console.log(err, data);
})
});

res:

$ node db.js
(node:9996) DeprecationWarning: current URL string parser is deprecated, and wil
l be removed in a future version. To use the new parser, pass option { useNewUrl
Parser: true } to MongoClient.connect.
null { _id: 5b4c780013c2a1270cd6c0fd,
user: 'bbb',
pass: '123',
__v: 0 }
null [ { _id: 5b4c76c859b0432a1c4e0626,
user: 'bbb',
pass: '123',
__v: 0 },
{ _id: 5b4c780013c2a1270cd6c0fd,
user: 'bbb',
pass: '123',
__v: 0 } ]
db2.js

连接成功测试

/*var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/716'); var db = mongoose.connection;
db.on('error', function() {
console.log("连接失败");
});
db.once('open', function() {
console.log("连接已经建立");
});*/
//或者
/*var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/20180716',function(err) {
if(err){
console.log("连接失败");
} else {
console.log("连接已经建立");
}
});*/

res:

$ node db2
(node:11436) DeprecationWarning: current URL string parser is deprecated, and wi
ll be removed in a future version. To use the new parser, pass option { useNewUr
lParser: true } to MongoClient.connect.
连接已经建立

心中那自由的世界,如此的清澈高远!

5. 文件上传下载 与 db数据库的更多相关文章

  1. jm解决乱码问题-参数化-数据库操作-文件上传下载

    jm解决乱码问题-参数化-数据库操作-文件上传下载 如果JM出果运行结果是乱码(解决中文BODY乱码的问题) 找到JM的安装路径,例如:C:\apache-jmeter-3.1\bin 用UE打开jm ...

  2. Django文件上传下载与富文本编辑框

    django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...

  3. commons-fileupload实现文件上传下载

    commons-fileupload是Apache提供的一个实现文件上传下载的简单,有效途径,需要commons-io包的支持,本文是一个简单的示例 上传页面,注意设置响应头 <body> ...

  4. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  5. nodejs+express-实现文件上传下载管理的网站

    Nodejs+Express-实现文件上传下载管理的网站 项目Github地址(对你有帮助记得给星哟):https://github.com/qcer/updo 后端:基于nodejs的express ...

  6. JavaWeb 文件上传下载

    1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图片或网盘等功能都是利用文件上传下 ...

  7. SpringMVC整合fastdfs-client-java实现web文件上传下载

    原文:http://blog.csdn.net/wlwlwlwl015/article/details/52682153 本篇blog主要记录一下SpringMVC整合FastDFS的Java客户端实 ...

  8. SpringMVC ajax技术无刷新文件上传下载删除示例

    参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...

  9. django 12天(跨域,文件上传,下载,cookie,session)

    django 12天(跨域,文件上传,下载) 跨域 什么是跨域 1.协议不同 2.端口不同 3.主机不同 如何解决跨域 1.安装django-cors-headers模块 2.在settings.py ...

随机推荐

  1. python测试开发django-51.Ajax发送post请求登录案例

    前言 我想实现一个登录功能:登录的接口是另外一个地方提供,页面上点登录按钮的时候,先访问登录接口,根据接口返回json信息判断是否登录成功,登录成功页面跳转,登录不成功,在登录首页显示失败原因 登录页 ...

  2. Linux压力测试工具stress的参数详解

    为了测试服务器的负载情况,可以使用stress这个压力测试工具,可以在环境上验证测试下. stress安装 sudo yum install -y epel-release sudo yum inst ...

  3. 分享12款令人瞠目结舌的WebVR演示和实验效果

    不管你信不信, WebVR绝对是浏览器下一个让你激动的技术方向, 也许很快你就可以使用VR头显或者相关设备直接访问web内容和资源啦! 在这篇资源分享帖中,我们将介绍很多基于浏览器的VR演示和游戏,帮 ...

  4. VS2017环境下安装AO10.2的方法

    软件版本 Visual Studio的全称.简称及版本号对应关系为: Microsoft Visual Studio 2002 VS2002 VC7.0 Microsoft Visual Studio ...

  5. 【.NET 深呼吸】在 .net core app 中使用 Composition

    .NET 中的 Composition ,即 MEF.MEF 说得简单一点,就是它可以在运行阶段动态地发现类型,用于组件扩展方面特别合适. .NET Core App 的默认框架并不提供 MEF 有关 ...

  6. 数据库的范式,第一、二、三、四、五范式、BC范式

    数据库的规范化(上一篇博客有写到)的程度不同,便有了这么多种范式.数据库范式是数据库设计必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库,甚至设计出错误误的数据库.课本中的定义比较抽 ...

  7. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  8. [Java] zjdbcping:JDBC数据库连接测试工具

    作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...

  9. jquery核心

    1.找到所有 p 元素,并且这些元素都必须是 div 元素的子元素 $("div > p"); 2.设置页面背景色 $(document.body).css("ba ...

  10. 获取当前网页的绝对URL地址

    通过创建一个虚拟的<a></a>元素,将它的href指定为相对URL,再读取它的href就会得到绝对URL. var getAbsoluteUrl = (function() ...