文件上传指的是将用户本地的文件上传到服务器中。
上传文件需要处理两个位置:
<强>客户端强>
-
<李>客户端如何上传文件?李>
<李>上传文件的表单项需要指定为输入,类型是文件李>
<李>要上传文件必须将表单enctype设置为多部分/格式这个参数表示表单将会以多部件表单的形式上传enctype=坝τ贸绦?x-www-form-urlencoded”是默认值。这个值的意思指将会对表单项的内容进行url编码,所谓url编码就将请求参数转换为二进制编码。李>
1,多部分/格式体无法解析,乘模块专门用来帮助我们解析多部件的请求体。
& lt; body> & lt; h3>文件上传(文件上传)& lt;/h3> & lt;形式action="/testUpload " method=" post " enctype="多部分/格式" id=靶问健痹? & lt; pre> 你好先生& lt;输入类型=拔谋尽眓ame="用户名"/比; upupup & lt;输入类型="文件" name="照片"/比; & lt;输入类型="提交" value=" https://www.yisu.com/zixun/提交" id=癰tn”比; & lt;/pre> & lt;/form>//利用AJAX上传文件 & lt; script> var btn=. getelementbyid (btn); btn。onclick=function () {//FormData这个对象可以用来对表单中的数据进行封装//使用FormData来对表单中的数据进行包装 var fd=new FormData (. getelementbyid(“形式”));//创建一个xhr对象 var xhr=new XMLHttpRequest ();//设置请求的地址 xhr。打开(“文章”、“/testUpload”);//发送请求 xhr.send (fd);//接收响应 xhr。onreadystatechange=function () { 如果(xhr。readyState==4,,xhr。状态==200){ 警报(xhr.responseText); } };//取消默认行为 返回错误; }; & lt;/script> & lt;/body> >之前2。服务器端
const表达=要求(“表达”); const应用=表达(); const bodyParser=要求(“体”); const乘=要求(“相乘”); app.use (bodyParser.urlencoded({扩展:假})); app.use (bodyParser.json ()); app.use (express.static(“公共”)); 常量存储=multer.diskStorage ({//目的地用来设置上传文件的路径可以接收一个回调函数,或者一个字符串//如果传递一个回调函数的话,则需要确保路径有效 目的地:上传/,//文件名属性可以用来指定文件上传以后保存到服务器中的名字 文件名:功能(要求、文件、cb) {//cb (null,文件。字段名+“-”+ Date.now ())//获取文件的扩展名//Chrysanthemum.jpg 让?file.originalname; 让extName=" ";//判断文件是否具有扩展名 如果(fname.lastIndexOf (“。”) !=1) { extName=fname.slice (fname.lastIndexOf (“。”); }//上传文件时,一般不会直接将用户的文件名直接保存的服务器中//一般会随机生成一个文件名 cb (null,文件。字段名+“-”+ Date.now () + extName); } }) const上传=相乘( { 存储:存储、 限制:{//限制文件的大小为200 kb 文件大小:1024 * 200 } }); app.post (“/testUpload”(点播,res)=祝辞{//获取解析请求体的函数 让傅=upload.single(照片);//手动调用函数来解析请求体 傅(点播,res (err)=祝辞{ 如果(err) {//证明上传出错了,文件大小超标 res.send(“文件太大了,请上传200 kb以下的文件! !”); 其他}{//读取请求参数 让用户名=req.body.username; res.send(“上传成功~ ~ ~”); } }); }); app.listen(3333年,()=祝辞{ console.log(“成功”); }); >之前文件夹示例
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
node . js实现文件上传的示例