zoukankan      html  css  js  c++  java
  • Node.js实现图片上传功能

    node接口实现

    const express = require('express')
    const mysql = require('mysql')
    const cors = require('cors') // 跨域
    const bodyParser = require('body-parser') // 解析参数
    const app = express()
    const router = express.Router()

    const multer = require('multer')//用于处理 multipart/form-data 类型的表单数据
    const fs = require('fs') //引入文件模块
    const path = require('path')//引入路径模块

    app.listen('9000',()=>console.log('服务启动'))

    const option = {
      host:'localhost',
      user:'***',//服务器用户名
      password:'***',//密码
      port:'***',//端口
      database:'***',//数据库
      connectTimeout:5000, // 连接超时
      multipleStatements:false // 是否允许一个query中包含多条sql语句
    }

    app.use(cors()) //解决跨域
    app.use(bodyParser.json()) //json请求
    app.use(bodyParser.urlencoded({extended:false})) // 表单请求
    app.use('/public',express.static(path.join(__dirname,'./www')))//存放图片上传路径

    const conn = mysql.createConnection(option)

    //上传接口
    app.all('/upload',multer().single('img'),(req,res)=>{

      let {buffer,mimetype} = req.file;
      let fileName = (new Date()).getTime() + parseInt(Math.random()*3435) + parseInt(Math.random()*6575);
      let fileType = mimetype.split('/')[1];
      let filePath = path.join(__dirname,'/www/images')
      let apath = `http://服务器ip:端口/public/images/${fileName}.${fileType}`

      fs.writeFile(`./www/images/${fileName}.${fileType}`,buffer,(data)=>{
        if(data){
          res.send({err:0,msg:"上传失败"})
        }else{
          conn.query("INSERT INTO 表名 VALUES ('"+fileName+"','" + fileName + "." + fileType + "','" + apath + "')") //给表中存入图片信息
          res.send({err:1,msg:"上传成功",imgPath:apath})//返回给前端图片路径
        }
      })
    })

    前端页面请求

    html
    <
    input type="file" id='put'> <img src="" alt="" width="500" > <button id="btn">上传图片</button>
    javascript
    var
    btn = document.getElementById("btn"); let url='服务器ip:端口'; btn.onclick = function(){ //通过文件域获取上传的图片信息 var a = document.getElementById("put").files[0]; var formdata = new FormData(); formdata.append('img',a); //console.log(formdata.get('img')) $.ajax({ url:url+'/upload', data:formdata, type:'get', processData: false,//必须 contentType: false,//必须 success:function(data){ console.log(data) var imgpath = data.imgPath $('img').attr('src',imgpath) } }) }

     注意

      需要先在对应目录建好文件夹

  • 相关阅读:
    MyBatis 智能标签
    MyBatis入门
    Hibernate 分组查询 子查询 原生SQL
    组件映射
    Hibernate组件映射
    hibernate 中的 lazy=”proxy” 和 lazy=”no-proxy” 的区别
    save(),saveOrUpdate(),merge()的区别
    ThreadLocal
    OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
    HIbernate实现增、删、改、查。
  • 原文地址:https://www.cnblogs.com/xue-shuai/p/11984509.html
Copyright © 2011-2022 走看看