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中实现sleep功能实例
Mar 24 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
详解NodeJS模块化
Jun 15 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
nodejs读写json文件的简单方法(必看)
2017/03/09 NodeJs
JavaScript闭包的简单应用
2017/09/01 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
详解Django框架中的视图级缓存
2015/07/23 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
python如何实现异步调用函数执行
2019/07/08 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
了解一下python内建模块collections
2020/09/07 Python
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
产品促销活动策划书
2014/01/15 职场文书
红色故事演讲稿
2014/05/22 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
企业员工辞职信范文
2015/05/12 职场文书
鸡毛信观后感
2015/06/11 职场文书
python和anaconda的区别
2022/05/06 Python
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang