博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node07 - 文件上传
阅读量:5101 次
发布时间:2019-06-13

本文共 3277 字,大约阅读时间需要 10 分钟。

1、from表单中属性  =>  enctype  

    参数1:application/x-www-form-urlencoded  =>  只能上传值

    参数2:multipart/form-data  => multipart: 分成多个部分,有可能上传多个文件,form-data:上传的是真正的表单数据,不仅仅是指一些值

    参数3:text/plain  =>   纯文本(少见)

2、bodyParser  =>  只能处理 urlencoded 数据

    from表单中 :application/x-www-form-urlencoded(有效),multipart/form-data(无效)

3、Node处理(multipart/form-data 表单)的中间件  =>  multer 

  (01)、下载引用  =>  cnpm install multer

  (02)、使用方法  =>

//nodejs 代码const express = require('express');const bodyParser = require('body-parser');const multer = require('multer');//需要先定义一个multer对象,multer里有好多方法,如any,single//single =>  指定某个上传文件//any  =>  指上传所有文件// dest =>  指定文件的上传路劲var objMulter = multer({dest: './www/upload/'});var server = express();//指定上传input-file-name=f1 的文件//server.use(objMulter.single('f1'));server.use(objMulter.any());server.post('/', function (req, res) {    //req。body: 上传的值    //req.files:  上传的文件    console.log(req.files);});server.listen(8080);
    
Title
文件
[ { fieldname: 'f1',
originalname: '1号-马擎.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
buffer:
, size: 4272195 } ]

    (03)、当   var objMulter = multer();加入指定文件上传路径的时候返回数据发生变化 ,dest:代表指定文件上传位置  =>   var objMulter = multer({dest: './www/upload/'});  

[ { fieldname: 'f1', originalname: '1号-马擎.jpg', encoding: '7bit', mimetype: 'image/jpeg', destination: './www/upload/',
filename: 'ed8c4abdc9216167741f27b6f78f17c2',
path: 'www\\upload\\ed8c4abdc9216167741f27b6f78f17c2',
size: 4272195 } ]

4、上传文件名更改  =>  fs.rename()

     参数1:原来文件名

    参数2:更改文件名

    参数3:异步回调函数

const fs = require('fs');fs.rename('a.txt', 'b.txt', function(err){    console.log(err);});

5、解析文件路径  =>  path.parse(文件路径)

    (01)、dir  =>  文件路径

    (02)、base  =>  文件名部分

    (03)、ext  =>  文件扩展名

const path = require('path');var str = 'C:\\Users\\U\\Desktop\\CZ-node\\node15-fileUplode\\file_uplode.html';var obj = path.parse(str);console.log(obj);
{ root: 'C:\\',
dir: 'C:\\Users\\U\\Desktop\\CZ-node\\node15-fileUplode',
base: 'file_uplode.html',
ext: '.html',
name: 'file_uplode' }

 6、文件上传并且修改上传文件的后缀名(原因:上传的文件没有后缀名),更改过后文件可以使用。

    实例:=>   

//nodejs 代码const express = require('express');const bodyParser = require('body-parser');const multer = require('multer');const fs = require('fs');const pathLib = require('path');//需要先定义一个multer对象,multer里有好多方法,如any,single//single =>  指定某个上传文件//any  =>  指上传所有文件// dest =>  指定文件的上传路劲var objMulter = multer({dest: './www/upload/'});var server = express();//指定上传input-file-name=f1 的文件//server.use(objMulter.single('f1'));server.use(objMulter.any());server.post('/', function (req, res) {    //req。body: 上传的值    //req.files:  上传的文件    //req.files[0].path:文件路径    //pathLib.parse(req.files[0].originalname).ext:文件扩展名    var newName = req.files[0].path + pathLib.parse(req.files[0].originalname).ext;    fs.rename(req.files[0].path, newName, function(err){        if (err)            res.send('上传失败');        else            res.send('上传成功');    });});server.listen(8080);
    
Title
文件

 

转载于:https://www.cnblogs.com/patriot/p/8027987.html

你可能感兴趣的文章
1.linux ping:unknown host www.***.***
查看>>
无向图求桥 UVA 796
查看>>
Nginx+Keepalived 实现双击热备及负载均衡
查看>>
五分钟搭建WordPress博客(二)
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
Something-Summary
查看>>
Spring学习笔记
查看>>
6个有用的MySQL语句
查看>>
linux c/c++ IP字符串转换成可比较大小的数字
查看>>
我对前端MVC的理解
查看>>
sql: table,view,function, procedure created MS_Description in sql server
查看>>
[网络流24题] 最长k可重区间集问题 (费用流)
查看>>
ActiveX多线程回调JavaScript
查看>>
剑指offer系列32-----对称二叉树的判断
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
Python 编程快速上手 第 7章 模式匹配与正则表达式
查看>>
欧几里德算法(模板)
查看>>
oracle 11g 压缩数据文件
查看>>