关于express使用formidable上传图片

关于express使用formidable上传图片express 中使用 formidable 上传图片前端页面 js 逻辑代码 nodejs 处理逻辑前端页面 使用 bootsrap 布局静态页面 formclass form horizontalfo add divclass form group labelclass col xs 2control label 分类名称 amp labelclass col xs 2control label divclass form group formclass form horizontalfo add

express中使用formidable上传图片

前端页面

/*使用bootsrap布局静态页面*/ <form class="form-horizontal form-add"> <div class="form-group"> <label class="col-xs-2 control-label">分类名称</label> <div class="col-xs-8"> <input name="classname" class="form-control" type="text" /> </div> </div> <div class="form-group"> <label class="col-xs-2 control-label">分类图片</label> <div class="col-xs-8"> <input name="classimg" class="form-control" type="file" accept="image/*" /> </div> </div> </form> 

js逻辑代码

/*点击添加分类使用jquery发送ajax请求*/ // js 获取form表单 let form = document.querySelector(".form-add") // 将表单中的数据通过formdata获取并传输 let formdata = new FormData(form) $.ajax({ 
    /*api 为监听接口的地址,如:http:127.0.0.1:3000/*/ url: api + 'addclass', type: 'post', data: formdata, dataType: 'json', // 限制默认发送form方式,改为json格式传送 contentType: false, /*默认情况下,通过data选项传递进来的数据, 如果是一个对象(技术上讲只要不是字符串), 都会处理转化成一个查询字符串, 以配合默认内容类型 “application/x-www-form-urlencoded”。 如果要发送 DOM 树信息或其它不希望转换的信息,设置为 false。*/ processData: false, success: function(res){ 
    if(res.status == 200) { 
    /*这里执行请求成功的逻辑*/ } } }) 

nodejs处理逻辑

let path = require('path') // 引入express let express = require('express') //引入formidable模块 let formidable = require('formidable'); //引入数据库 let mysql = require('mysql') // 创建数据库连接 let connect = mysql.createConnection({ 
    host: '127.0.0.1', //数据库服务器ip,127.0.0.1表示本机 user: 'root', password: '123', //数据库密码 database: 'shop' //数据库名 }) // 连接数据库 connect.connect() /*监听添加分类接口*/ app.get("/addclass", function(req,res){ 
    // 获取请求的参数 // 获取传入的form表单 解析地址传入的form表单 let form = new formidable.IncomingForm(); // 设置图片上传的地址 form.uploadDir = './upload' // 保留图片后缀名 form.keepExtensions = true // 解析参数 // fields 除了上传图片的其他数据 // files 上传的文件 form.parse(req, function(err, fields, files){ 
    // 解析上传图片的地址,获取图片名称 let filebase = path.parse(files.img.path).base // 将上传的数据存入数据库中 // ? 代表sql语句需要的参数 let sql = 'insert into goods(name, img) values(?) ' let data = [fields.name, filebase] connect.query(sql, [data], function(err, data){ 
    if(!err) { 
    res.json({ 
    status: 200, data: '' //上传成功返回的数据 }) }else { 
    //上传失败操作 } }) }) }) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232214.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月25日 下午2:01
下一篇 2025年10月25日 下午2:22


相关推荐

  • linux抓包命令详解_抓包后如何分析

    linux抓包命令详解_抓包后如何分析抓包

    2022年10月10日
    7
  • 如何给mysql创建一个账户「建议收藏」

    如何给mysql创建一个账户「建议收藏」1.使用root账户登录到mysql:mysql -uroot -p2.创建用户名和密码:grant all on *.* to 用户名@’127.0.0.1′ identified by "密码";3.创建成功后,需设置访问权限。首先切换到mysql数据库:use mysql;4.修改新建用户的权限:update user set host = ‘%’ where user = ‘attckne…

    2022年8月18日
    14
  • linux vim dd命令_vim命令和vi的区别

    linux vim dd命令_vim命令和vi的区别Vim是从vi发展而来的文本编辑器,可以用颜色或底线等方式来显示一些特殊的信息。Vim是Linux中必不可少的工具,搭建网站修改配置文件时经常用到。本教程介绍Vim的模式和常用操作。背景信息Vim的各个模式介绍如下表所示:模式作用模式转换普通模式(NormalMode)在该模式下,您可以复制、粘贴、删除字符或行。运行vim打开文件时,即进入普通模式。在其他四个模式下,按Esc键…

    2026年2月13日
    4
  • Android 12 SplashScreen API快速入门

    Android 12 SplashScreen API快速入门Android12 正式版即将发布 这次的 Android 系统变化当中 UI 的变化无疑是巨大的 Google 在 Android12 中采取了一种叫作 MaterialYou 的界面设计 一切以你为中心 以你的喜好为风格 相信大家一旦上手 Android12 之后应该能立刻察觉到这些视觉方面的变化 另外还有一个非常显著的视觉变化就是 Android12 强制给所有的 App 都增加了 SplashScreen 的功能 是的 即使你什么都不做 只要你的 App 安装到了 Android12 手机上 都会自动拥有这个新功能

    2026年3月19日
    2
  • 文心X1 Turbo获信通院“4+级”最高评级

    文心X1 Turbo获信通院“4+级”最高评级

    2026年3月12日
    2
  • EmguCV录制视频

    我所录制的为摄像头的视频:使用的函数为VideoWriter。usingSystem;usingSystem.Drawing;usingSystem.Windows.Forms;usingEmgu.CV;usingEmgu.CV.CvEnum;usingEmgu.CV.Structure;namespaceEmguCVHist{publicpartialc

    2022年4月7日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号