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


相关推荐

  • PIT,BL,AP,CP,CSC

    PIT,BL,AP,CP,CSC使用ODIN刷机的时候,要选择ROM文件,以下是5件套各部分的说明:PIT:分区信息,如果没有更换ROM,一般不需要刷,也不需要勾选re-partition选项BL:bootloader,引导信息AP或者PDA:安卓内核数据CP或者PHONE:基带数据CSC:厂家定制信息,即包括不同销售地区不同的信息,也包括厂家定制的一些APP,还包括合约机绑定的APP。

    2022年7月21日
    15
  • mysql命令备份

    mysql命令备份mysql命令备份

    2022年6月21日
    22
  • sql删除或清空表数据[通俗易懂]

    sql删除或清空表数据[通俗易懂]sql删除或清空表数据一、sql清空表数据的三种方式:二、语法一、sql清空表数据的三种方式:我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:1、truncate–删除所有数据,保留表结构,不能撤销还原2、delete–是逐行删除速度极慢,不适合大量数据删除3、drop–删除表,数据和表结构一起删除,快速二、语法truncatetable表名deletefrom表名deletefrom表

    2022年4月30日
    53
  • 数据结构-顺序表基本操作的实现(含全部代码)

    数据结构-顺序表基本操作的实现(含全部代码)今天起开始编写数据结构中的各种数据结构及其算法的实现。主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。今天是线性表中的顺序表的实现,主要实现函数如下,读者有需要可以评论,我可以适当加几个。CreatList(SqList&L,intn)参数:顺序表L,顺序表长度n功能:创建长度为的顺序表时间复杂度:O(n) InitList(SqList&…

    2022年4月28日
    61
  • VMware Ubuntu安装详细过程(详细图解)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!一.下载Ubuntu镜像文件下载地址:http://mirrors.aliyun.com/ubuntu-releases/16.04/进入下载页面,如下图选择版本点击即可下载二.下载及安装VMware下载地址:https://pan.baidu.com/s/1aEEI-DRa4oKeViddxW2CPA…

    2022年4月7日
    70
  • Newtonsoft 六个超简单又实用的特性,值得一试 【上篇】

    Newtonsoft 六个超简单又实用的特性,值得一试 【上篇】一 讲故事看完官方文档 阅读了一些 Newtonsoft 源码 对它有了新的认识 先总结六个超经典又实用的特性 同大家一起分享 废话不多说 快来一起看看吧 二 特性分析 1 代码格式化如果你直接使用 JsonConvert SerializeObj 的话 默认情况下所有的 json 是挤压在一块的 特别不方便阅读 如下所示 staticvoidMa string args varreportMod

    2025年9月3日
    3

发表回复

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

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