节点上传文件示例
文件上传是指将用户的本地文件上传到服务器。
上传文件有两个位置:
客户
客户端如何上传文件?上传文件的表单项需要指定为输入,类型为文件。要上传文件,表单的enctype必须设置为multipart/form-data。此参数指示表单将作为多部分表单上传。enctype=" application/x-www-form-URL encoded "是默认值。该值意味着表单项的内容将被url编码,所谓的url编码将请求参数转换为二进制编码。1.multipart/form-data body-parser无法解析,multer模块专门用来帮助我们解析multipart的请求体。
Bodyh2文件上传/H2表单操作='/测试上传'方法=' post ' enctype=' multipart/Form-data ' id=' Form ' prehi sir input type=' text ' name=' username '/upup input type=' file ' name=' photo '/input type=' submit ' value=' submit ' id=' BTN ' style=' width 3360100 px;background-color 3360 # 99ff 99 '/pre/form//上传文件脚本varb TN=document . getelementbyid(' BTN ')by AJAX;BTN . onclick=function(){//FormData此对象可用于打包表单中的数据//使用FormData打包表单中的数据var FD=new FormData(document . getelementbyid(' form '));//创建xhr对象var xhr=new XMLHttpRequest();//设置请求的地址xhr.open('post ','/testUpload ');//发送请求xhr . send(FD);//接收响应xhr . onreadystatechange=function(){ if(xhr . readystate==4xhr . status==200){ alert(xhr . responsetext);} };//取消默认行为返回false};/script/body2。服务器端
const express=require(' express ');const app=express();const body parser=require(' body-parser ');const multer=require(' multer ');app . use(BodyParser . URL encoded({ extended : false });app . use(BodyParser . JSON());app . use(express . static(' public '));const storage=multer . disk storage({//destination用于设置上传文件的路径,可以接收回调函数或字符串。//如果传递了回调函数,需要确保路径是有效的Destination 3360“uploads/”。//filename属性可以用来指定文件名filename:function (req,file,CB) {//CB (null,file . field name '-. date . now())//获取文件扩展名//菊花. jpg let fname=file . original name;让extName=//判断文件是否有扩展名if(fname.lastIndexOf(' . '))!=-1){ extName=fname . slice(fname . LastIndexof(' . '));}//上传文件时,用户的文件名不会直接保存在服务器中。//将随机生成一个文件名CB (null,file . field name '-. date . now(). ext name)。} })const upload=multer({ storage : storage,limit 3360 {//将文件大小限制为200 kb file size :1024 * 200 } });App.post ('/testupload ',(req,RES)={//获取用于解析请求正文的函数let fu=upload . single(' photo ');//手动调用函数解析请求体fu(req,res,(err)={ if(err){ //证明上传有错误,文件大小超过标准res.send('文件太大,请上传200kb以下的文件!');}else{ //read request参数让username=req . body . username;Res.send('上传成功~ ~ ~ ');} });});app.listen(3333,()={ console . log(' success ');});示例文件夹
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。