ajax +NodeJS 实现图片上传实例

发布时间 - 2026-01-11 01:45:53    点击率:

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


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  # 实现图片上传  # ajax  # 图片上传  # node  # 上传图片  # node.js+Ajax实现获取HTTP服务器返回数据  # Node.js服务器环境下使用Mock.js拦截AJAX请求的教程  # Node.js配合node-http-proxy解决本地开发ajax跨域问题  # Node.js获取前端ajax提交的request信息  # Ajax获取node服务器数据的完整步骤  # 上传  # 看了  # 目录下  # 在这  # 扩展名  # 先在  # 创建一个  # 都去  # 大家多多  # 好就  # 而不是  # 增加了  # 是用来  # file  # req  # resolve  # null  # cb  # diskStorage 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI将一段旋律扩展成一首完整的曲子  怎样使用JSON进行数据交换_它有什么限制  Laravel如何实现一对一模型关联?(Eloquent示例)  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  python中快速进行多个字符替换的方法小结  如何用y主机助手快速搭建网站?  如何用腾讯建站主机快速创建免费网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  网站制作企业,网站的banner和导航栏是指什么?  如何打造高效商业网站?建站目的决定转化率  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  北京网站制作的公司有哪些,北京白云观官方网站?  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  三星、SK海力士获美批准:可向中国出口芯片制造设备  昵图网官方站入口 昵图网素材图库官网入口  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何快速搭建高效WAP手机网站?  如何用AWS免费套餐快速搭建高效网站?  利用python获取某年中每个月的第一天和最后一天  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  中山网站推广排名,中山信息港登录入口?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何在搬瓦工VPS快速搭建网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在云主机上快速搭建多站点网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  再谈Python中的字符串与字符编码(推荐)  Python3.6正式版新特性预览  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  详解Oracle修改字段类型方法总结  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel如何处理和验证JSON类型的数据库字段  Laravel如何处理表单验证?(Requests代码示例)  JavaScript如何实现类型判断_typeof和instanceof有什么区别  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  浅述节点的创建及常见功能的实现  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  iOS正则表达式验证手机号、邮箱、身份证号等  如何快速打造个性化非模板自助建站?  如何在Tomcat中配置并部署网站项目?  香港服务器如何优化才能显著提升网站加载速度?  微信小程序 input输入框控件详解及实例(多种示例)