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 相关文章推荐
NodeJS框架Express的模板视图机制分析
Jul 19 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 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
冰滴咖啡制作步骤
2021/03/03 冲泡冲煮
PHP 和 COM
2006/10/09 PHP
PHP 采集程序原理分析篇
2010/03/05 PHP
php单例模式示例分享
2015/02/12 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
python发布模块的步骤分享
2014/02/21 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
关于python多重赋值的小问题
2019/04/17 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
python用requests实现http请求代码实例
2019/10/31 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
实习评语
2013/12/16 职场文书
八一建军节活动方案
2014/02/10 职场文书
就业推荐表导师评语
2014/12/31 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
关于观后感的作文
2015/06/18 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis