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进程管理模块forever详解
Jun 01 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
跟我学Laravel之路由
2014/10/15 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python表示矩阵的方法分析
2017/05/26 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
如何理解python中数字列表
2020/05/29 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
元旦获奖感言
2014/03/08 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
大班幼儿评语大全
2014/04/30 职场文书
个人创业事迹材料
2014/12/30 职场文书
标准发言稿结尾
2019/07/18 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers