[Nodejs]文件上传

123 阅读2分钟

01、experess generator (应用程序生成器)完整使用

快速生成 express骨架

官方文档

使用流程:

  • npm install -g express-generator // 向全局暴露出一个 express 命令
  • express -v// 查看命令目录
  • express -e 文件夹名称* // 文件放置位置的文件夹名称*
  • npm i // 安装依赖

运行文件参考 package.json–>scripts 命令

  • npm run server

运行后浏览器访问127.0.0.1:3000

快速生成express骨架完成

02、查看文件上传报文

文件上传也是在发送HTTP请求报文,文件上传时必须添加enctype="multipart/form-data"的原因如下:

1、文件上传基本流程

  • 设置路由规则 router->index.js
	//设置显示网页的路由规则

	router.get('/tx',(req, res) => {

	res.render('weJin');//渲染文件

	})
 
 
 
  • 创建上传文件 view-> 创建 wenjin.ejs
	<!DOCTYPE html>

	<html lang="en">

	<head>

	    <meta charset="UTF-8">

	    <meta name="viewport" content="width=device-width, initial-scale=1.0">

	    <title>文件上传</title>

	</head>

	<body>

	    <h1>文件上传</h1><hr>

	</body>

	</html>
 
 
 
  • 处理文件上传,设置路由规则
	//处理文件上传

	router.post('/tx',(req, res) => {

	  res.send('成功');

	})
 
 
 
  • 启动服务器:npm start
  • 浏览器访问

2、添加上传文件:

  • wenjian.ejs 添加如下内容
	<form action="/tx" method="post" enctype="multipart/form-data">

	        用户名:<input type="text" name="username"><br/>

	        头像:<input type="file" name="tx"><br/>

	        <button>提交</button>

	    </form>
 
 
 

抓包工具展示内容:

总结:因为上传文件也是在发送HTTP请求,若不添加enctype="multipart/form-data"请求报文将只有名称,没有具体内容,真正的文件将无法上传。

03、处理文件上传(formidable?????

  • 文件上传时必须添加的命令 (前端)

处理文件上传:formidable官方文档

使用流程:

  • npm i formidable// 安装包
  • 导入文件
  • 在文件上传请求位置添加相应代码

问题:配置这个上传文件的依赖后上传文件一直出现错误

“500 internal server error” 意思是服务器内部发生了错误,无法完成客户端的请求。这通常表明服务器端存在 bug 或者配置问题。可能需要开发人员调查并解决问题。