ajax +NodeJS 实现图片上传实例


Posted in NodeJs onJune 06, 2017

前台用jquery的ajax发请求,后台用NodeJS 的multer模块实现图片上传。这个demo给我的感悟是一定要自己能实现出来,而不是看了别人写好就直接“拿来”用

ajax +NodeJS 实现图片上传实例

note(注意)

大家先在public目录下创建一个名为uploads的文件夹,这个文件夹是用来保存你上传过的图片

安装multer模块:

npm i -S multer

code(代码)

1.app.js

const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();

//所有请求过来,都去项目当前的public目录下寻找所请求的文件,找到就返回
app.use(express.static('./public'));

//选择diskStorage存储
const storage = multer.diskStorage({
 destination: function (req, file, cb) {
  cb(null, path.resolve('public/uploads'));
 },
 filename: function (req, file, cb) {
  cb(null, Date.now() + path.extname(file.originalname));//增加了文件的扩展名
 }
});

const upload = multer({storage: storage});

app.post('/profile', upload.single('avatar'), function(req, res, next) {

 res.send({
  err: null,
  //filePath:就是图片在项目中的存放路径
  filePath: 'uploads/' + path.basename(req.file.path)
 });
});

app.listen(3000, function () {
 console.log("app is listening 3000 port");
});

2.index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>

</head>
<body>
<form class="form-horizontal" enctype='multipart/form-data' method='post' action='javascript:;'>
  <input type="file" id="choose"/>
  <button onclick="handle()">上传</button>
  <img class="newImg"/>
</form>

<script>
  function handle() {
   //获取上传的File对象,此处是一张图片对象
    let file = document.getElementById("choose").files[0];
    let formData = new FormData();
    formData.append("avatar", file);//设置key为avartar,value为上述的File对象
    $.ajax({
      type: 'POST',
      url: '/profile',
      data: formData,
      processData: false,
      success: function (data) {
        $(".newImg").attr("src", data.filePath);//上传成功则图片显示
      },
      error: function (err) {
        console.log(err.message);
      }
    })
  }
</script>
</body>
</html>

demo地址在这

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
详解Nodejs之静态资源处理
Jun 05 #NodeJs
nodejs集成sqlite使用示例
Jun 05 #NodeJs
详解nodeJS之二进制buffer对象
Jun 03 #NodeJs
深入理解Nodejs Global 模块
Jun 03 #NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 #NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 #NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 #NodeJs
You might like
php实现用户在线时间统计详解
2011/10/08 PHP
php判断当前操作系统类型
2015/10/28 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
Postman模拟发送带token的请求方法
2018/03/31 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
5款非常棒的Python工具
2018/01/05 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
Python单链表原理与实现方法详解
2020/02/22 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
大学第二课堂活动总结
2014/07/08 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
先进党员事迹材料
2014/12/24 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL