• 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) } }) }

     注意

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

  • 相关阅读:
    iOS沙盒目录
    iOS 1-2年经验面试参考题
    iOS 深浅拷贝
    MacOS10.11的/usr/bin目录不可写后class-dump的处理办法
    AFNetWorking 队列请求
    iOS 宏(define)与常量(const)的正确使用
    【译】使用UIKit进行面向对象的编程
    零基础如何系统地学习前端开发?
    加载UI
    __weak
  • 原文地址:https://www.cnblogs.com/xue-shuai/p/11984509.html
Copyright © 2020-2023  润新知