关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PHP 高级工程面试题汇总

    PHP 高级工程面试题汇总

    2021年11月4日
    46
  • 网络传真机,开启无纸化进程

    网络传真机,开启无纸化进程网络传真机,离你不再遥远!网络传真-真实号码版,超低价来袭,江苏电信倾力投资,立足江苏,面向全国!13万靓号任君选择。(1)传真发送功能点击写传真可进行单个号码发送传真也可多个号码发送(目前单次80个号码上限);传真群发操作:步骤1:输入发送的个号码,多个号码中间用逗号隔开;也可选择地址导入与文本导入方式导入需要发送的号码。步骤2:输入发送主题;步骤3:点击浏览上传要发送的传…

    2022年6月28日
    29
  • mysql读写分离配置

    mysql读写分离配置mysql读写分离配置随着网站访问和请求量的增加,单台数据库服务器的连接已耗尽,会出现连接请求还在等待,或是数据库服务器崩溃等现象,这时候我们考虑如何减少数据库的连接,可以通过优化代码、使用缓存、数据库读写分离等方式解决此问题。 什么是读写分离:将数据库的读、写操作分别作用到不同的数据库(不同物理机)上。 适用场景:读操作远大于写操作,包含大量复杂统计、离线计算等任务(比如定时按各维度对数…

    2022年6月9日
    38
  • ldapsearch命令详解_ldapsearch命令详解

    ldapsearch命令详解_ldapsearch命令详解参数用途-?打印关于使用ldapsearch的帮助。-aderef指定别名反向引用。请输入never、always、search或find。如果不使用此参数,缺省为never。-A只检索属性的名称,而不检索属性的值。-bbasedn指定用作搜索起始点的专有名称。使用引号来指定该值,例如:”ou=West,o=Acme,c=US”如果要搜索的服务器需要指定搜索…

    2025年6月16日
    2
  • 解决pycharm汉化后无法打开设置

    解决pycharm汉化后无法打开设置转自:https://www.52pojie.cn/thread-728816-1-1.html由于操作相对复杂,再次小白整理了一下,下载压缩包内有使用方法,一目了然链接:https://pan.baidu.com/s/1o0jcRlPy4AuNAtfsk2wvHw提取码:4l7j…

    2022年5月16日
    41
  • 谷歌的营销策略分析_反谷歌法

    谷歌的营销策略分析_反谷歌法谷歌YSlow准则YSlow可以对网站的页面进行分析,并告诉你为了提高网站性能,如何基于某些规则而进行优化。测试个人站点通过测试个人站点可以获得下面的数据23条准则MakefewerHT…

    2025年7月7日
    4

发表回复

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

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