文件上传

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
  1. var http = require("http");
  2. var formidable = require("formidable");
  3. var fs = require("fs");
  4. var path = require("path");
  5. http.createServer(function(req,res){
  6. console.log(req.url);
  7. if(req.url == "/upload"){
  8. var form = new formidable.IncomingForm();
  9. form.uploadDir = "upload";
  10. form.parse(req, function(err, fields, files) {
  11. console.log(fields, files);
  12. var oFile = files.f1;
  13. var oldPath = oFile.path;
  14. var newName = oldPath + oFile.name;
  15. fs.rename(oldPath,newName,function(err){
  16. res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});//设置response编码为utf-8
  17. if(err){
  18. res.end("上传失败");
  19. } else {
  20. res.end("上传成功");
  21. }
  22. });
  23. });
  24. }
  25. }).listen(9000);
form.html
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>无标题文档</title>
  6. </head>
  7. <body>
  8. <form action="http://localhost:9000/upload" enctype="multipart/form-data" method="post">
  9. <input type="text" name="user" value="aaa" /> <br /><br />
  10. <input type="file" name="f1" value="" /> <br /><br />
  11. <input type="submit"/>
  12. </form>
  13. </body>
  14. </html>

res:

  1. $ node server
  2. /upload
  3. { user: 'aaa' } { f1:
  4. File {
  5. domain: null,
  6. _events: {},
  7. _eventsCount: 0,
  8. _maxListeners: undefined,
  9. size: 5,
  10. path: 'upload\\upload_df6a908be04c7a08d5406784cfbcb468',
  11. name: 'test.txt',
  12. type: 'text/plain',
  13. hash: null,
  14. lastModifiedDate: 2018-07-13T12:55:25.753Z,
  15. _writeStream:
  16. WriteStream {
  17. _writableState: [Object],
  18. writable: false,
  19. domain: null,
  20. _events: {},
  21. _eventsCount: 0,
  22. _maxListeners: undefined,
  23. path: 'upload\\upload_df6a908be04c7a08d5406784cfbcb468',
  24. fd: null,
  25. flags: 'w',
  26. mode: 438,
  27. start: undefined,
  28. autoClose: true,
  29. pos: undefined,
  30. bytesWritten: 5,
  31. closed: true } } }

server.js
  1. var express = require("express");
  2. var multer = require("multer");
  3. var fs = require("fs");
  4. var app = express();
  5. app.listen(9000);
  6. app.use(express.static("www"));
  7. app.use(express.urlencoded({extended:false}));
  8. //文件上传中间件
  9. var multerMiddleware = multer().any();
  10. app.use(multerMiddleware);
  11. app.use("/upload",function(req,res){
  12. console.log(req.files);
  13. var oFile = req.files[0];
  14. var path = "upload/"+ oFile.originalname;
  15. var buf = oFile.buffer;
  16. fs.writeFileSync(path,buf);
  17. });

res:

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

文件下载download
  1. var express = require("express");
  2. var app = express();
  3. app.listen(9000);
  4. app.use("/download",function(req,res){
  5. res.download(__filename);//下载自己
  6. });

res:

db数据库

mysql与 mongodb

1.mysql

npm i mysql 驱动

连接数据库

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

操作数据库:

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
  1. mysql mongodb —— json
  2. 关系型数据库 非关系型数据库
  3. database database
  4. table collection集合
  5. row document文档
  6. col field属性

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

mongod 服务器端

mongo 客户端

配置环境变量:

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

执行:

  1. mongod --dbpath C:\data\db 默认的配置 以后启动 mogod
  2. 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条

  1. pageNo beginIndex
  2. 1 0
  3. 2 2
  4. 3 4
  5. 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>, ... ])

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

update
$set:修改或者添加
  1. db.user_table.update(
  2. { username: "aaa" },
  3. {
  4. $set: {username: "AAA", password: "AAA",age: 100}
  5. }
  6. )
  7. db.user_table.update( { username: "AAA" }, { $unset: { password: 1 } } )
  8. $unset 删除属性
  9. db.user_table.find({},{"_id":0});
  10. db.user_table.update(
  11. { username: "aaa1" },
  12. { $set: { username : "AAA1" } },
  13. { multi: true} 可以修改多条数据 默认是false
  14. )
  15. db.user_table.updateOne(
  16. { username: "aaa3" },
  17. { $set: { username : "AAA3" } }
  18. );
  19. db.user_table.updateMany(
  20. { username: "aaa2" },
  21. { $set: { username : "AAA2" } }
  22. );

删除 没有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

  1. xxx.txt
  2. {username:"xxx1",password:"xxx1",age:1}
  3. {username:"xxx2",password:"xxx2",age:2}
  4. {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
  1. var mongoose = require('mongoose');
  2. var Schema = mongoose.Schema;
  3. mongoose.connect('mongodb://localhost/20180716');
  4. //定义表结构的数据类型
  5. var userSchema = new Schema({
  6. user:String,
  7. pass:String
  8. });
  9. //定义表 表结构都会带s,只能有一个s 控制台查询:db.user_tables.find();
  10. var UserModel = mongoose.model('user_table', userSchema);
  11. //创建数据 行 document
  12. var oUser = new UserModel({user:"bbb"});
  13. oUser.pass = "123";
  14. //db.user_table.insert(document);
  15. //插入
  16. oUser.save(function (err, result) {
  17. console.log(err, result);
  18. //查询
  19. //find
  20. UserModel.find(function (err, data) {
  21. console.log(err, data);
  22. })
  23. });

res:

  1. $ node db.js
  2. (node:9996) DeprecationWarning: current URL string parser is deprecated, and wil
  3. l be removed in a future version. To use the new parser, pass option { useNewUrl
  4. Parser: true } to MongoClient.connect.
  5. null { _id: 5b4c780013c2a1270cd6c0fd,
  6. user: 'bbb',
  7. pass: '123',
  8. __v: 0 }
  9. null [ { _id: 5b4c76c859b0432a1c4e0626,
  10. user: 'bbb',
  11. pass: '123',
  12. __v: 0 },
  13. { _id: 5b4c780013c2a1270cd6c0fd,
  14. user: 'bbb',
  15. pass: '123',
  16. __v: 0 } ]
db2.js

连接成功测试

  1. /*var mongoose = require('mongoose');
  2. var Schema = mongoose.Schema;
  3. mongoose.connect('mongodb://localhost/716');
  4. var db = mongoose.connection;
  5. db.on('error', function() {
  6. console.log("连接失败");
  7. });
  8. db.once('open', function() {
  9. console.log("连接已经建立");
  10. });*/
  11. //或者
  12. /*var mongoose = require('mongoose');
  13. mongoose.connect('mongodb://localhost/20180716',function(err) {
  14. if(err){
  15. console.log("连接失败");
  16. } else {
  17. console.log("连接已经建立");
  18. }
  19. });*/

res:

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

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

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. Huawei® ENSP & VRP CheatSheet

    #################### 系统命令 #################### system-view sysname display current-configuration und ...

  2. opencv+python-图片文本倾斜校正

    # -*- coding: UTF-8 -*- import numpy as np import cv2 ## 图片旋转 def rotate_bound(image, angle): #获取宽高 ...

  3. python之使用set对列表去重,并保持列表原来顺序(转)

    https://www.cnblogs.com/laowangball/p/8424432.html #原始方法,但是会打乱顺序 mylist = [1,2,2,2,2,3,3,3,4,4,4,4]m ...

  4. MyBatis架构与源码分析<资料收集>

    1.架构与源码分析 :https://www.cnblogs.com/luoxn28/p/6417892.html .https://www.cnblogs.com/wangdaijun/p/5296 ...

  5. JS获取当前日期、比较日期大小

    //获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-& ...

  6. Android 读写权限,已经授权情况下,仍然(Permission denied)

    首次安装APP,获取读写权限以后, 当读取文件时候,仍然会遇见(Permission denied)错误,解决方案是杀掉APP,重新打开APP即可. 应该属于部分版本系统的bug,直到APP所有的pr ...

  7. Effective Java 第三版—— 86. 非常谨慎地实现SERIALIZABLE接口

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  8. 通过一个小Trick实现shader的像素识别/统计操作

    2018/12/14日补充:后来发现compute shader里用AppendStructuredBuffer可以解决这类问题,请看这里:https://www.cnblogs.com/hont/p ...

  9. Atitit 创业好处 Atitit 为什么我们要创业

    Atitit 创业好处 Atitit 为什么我们要创业 1.1. 提升学历 1 1.2. 提升自己的能力 1 1.3. 拓展视野 站在高层ceo 才能掌握全局.站在产业链高层,才可看到趋势. 1 1. ...

  10. iOS 实现单个页面支持横竖屏,其他页面只能竖屏

    最近在自己的项目里面 有需要做一个需求 : app中某一个页面支持横竖屏, 而其他页面只能竖屏. 1 2 实现方法如下: 1 首先需要Xcode中选中支持的屏幕方向  2 Appdelegate中 . ...