视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Ajax+nodejsmulter做出文件上传的功能
2020-11-27 19:57:27 责编:小采
文档
 这次给大家带来Ajax+node js multer做出文件上传的功能,Ajax+node js multer做出文件上传的注意事项有哪些,下面就是实战案例,一起来看一下。

说明

作为一个node 初学者,最近在做一个聊天软件,支持注册、登录、在线单人、多人聊天、表情发送、各种文件上传下载、增删好友、聊天记录保存、通知声开关、背景图片切换、游戏等功能,所以用到了multer 模块,经过各种查文档,做demo例子,终于成功实现单个文件上传功能,支持大部分文件格式上传,同时显示到网页上

效果

是不是有种微信即视感,没错,就是根据网页版微信来做的,

要实现整体效果的话,要配合css和html来做,前端初学者,第一次发博客,实在捉急,近期,将会将代码放到github上去,感兴趣的朋友可以去看一下

下面直接上代码,轻虐

配置

安装

直接通过cmd命令窗口安装multer

npm install multer -save

服务器代码

//引入http
const http=require("http");
//引入express
const express=require("express");
//引入multer
const multer=require("multer");
//创建服务器,绑定监听端口
var app=express();
var server=http.createServer(app);
server.listen(8081);
//建立public文件夹,将HTML文件放入其中,允许访问
app.use(express.static("public"));
//文件上传所需代码
//设置文件上传路径和文件命名
var storage = multer.diskStorage({
 destination: function (req, file, cb){
 //文件上传成功后会放入public下的upload文件夹
 cb(null, './public/upload')
 },
 filename: function (req, file, cb){
 //设置文件的名字为其原本的名字,也可以添加其他字符,来区别相同文件,例如file.originalname+new Date().getTime();利用时间来区分
 cb(null, file.originalname)
 }
});
var upload = multer({
 storage: storage
});
//处理来自页面的ajax请求。single文件上传
app.post('/upload', upload.single('file'), function (req, res, next) {
 //拼接文件上传后的网络路径,
 var url = 'http://' + req.headers.host + '/upload/' + req.file.originalname;
 //将其发回客户端
 res.json({
 code : 1,
 data : url
 });
 res.end();
});

客户端代码

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title></title>
 <!--依托于jquery-->
 <script src="js/jquery-1.11.3.js"></script>
</head>
<body>
 <p class="container">
 <label>file</label>
 <input type="file" name="file" id="file">
 </p>
<script>
 var file=$("#file")[0];
 //这里使用的是onchange事件,所以当你选择完文件之后,就触发事件上传
 file.onchange=function(){
 //创建一个FormDate
 var formData=new FormData();
 //将文件信息追加到其中
 formData.append('file',file.files[0]);
 //利用split切割,拿到上传文件的格式
 var src=file.files[0].name,
 formart=src.split(".")[1]; 
 //使用if判断上传文件格式是否符合 
 if(formart=="jpg"||formart=="png"||
 formart=="docx"||formart=="txt"||
 formart=="ppt"||formart=="xlsx"||
 formart=="zip"||formart=="rar"||
 formart=="doc"){
 //只有满足以上格式时,才会触发ajax请求
 $.ajax({
 url: '/upload',
 type: 'POST',
 data: formData,
 cache: false,
 contentType: false,
 processData: false,
 success: function(data){
 //上传成功之后,返回对象data 
 if(data.code>0){
 var src=data.data;
 //利用返回值src 网络路径,来实现上传文档的下载 
 if(formart=="docx"||formart=="txt"||formart=="doc"){
 //结合css样式,实现显示图标
 var className="docx";
 //拼接html,生成到页面上去 
 var msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
 }else if(formart=="ppt"){
 //PPT 格式
 className="ppt";
 msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
 }else if(formart=="xlsx"){
 //xlsx 格式
 className="xlsx";
 msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
 }else if(formart=="zip"||formart=="rar"){
 //zip || rar 格式
 className="zip";
 msg=`<a href="${src}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><i class="${className}"></i></a>`;
 }else{
 //所有的图片格式 
 msg=`<a href="javascript:;" rel="external nofollow" class="picCheck"><img src="${src}"></a>`;
 }
 // 这里将msg 追加到你要显示的区域 
 }
 } 
 //不满足上传格式时 
 }else{
 alert("文件格式不支持上传")
 }
 }
</script>
</body>
</html>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用CORS实现WebApi Ajax跨域请求的方法

Ajax怎么实现动态加载组合框(附代码)

下载本文
显示全文
专题