在项目中上传文件

本文介绍了在项目中如何实现文件(特别是图片)的上传并将其存储信息保存到数据库的过程。步骤包括:将图片存储路径保存到数据库,修改数据模型,通过接口上传图片并获取服务器地址,将图片地址与其他表单数据结合存储,最后从数据库读取信息以展示图片。
摘要由CSDN通过智能技术生成

一、在项目中上传文件(图片)

1、将图片上传后保存到数据库中

(1)数据库中保存图片的什么信息:将图片在服务器中的存储路径保存到数据库中

(2)修改数据模型:

(3)图片上传到服务器,再从服务器保存到数据库(图片的保存信息+其他的表单数据)

A、先上传图片,将图片在服务器上存储地址返回客户端

B、将服务器返回的图片的存储地址和其他的表单信息一起发送的服务器端,由服务器存储到数据库中

(4)上传接口:接收上传的图片保存到指定的路径下,将存储路径和服务器地址拼接成字符串返回给客户端

(5)将图片地址和其他表单数据进行打包       

2、从数据库中读取图片的信息,让图片在表格中显示出来

//与数据库进行连接
const sequelize = require('sequelize');

const db = new sequelize('dbms','root','128945566',{
    host: 'localhost',
    port: 3306,
    dialect: 'mysql',
    pool: {
        max: 10,
        min: 3,
        idle: 10000
    },
    debug: true
})

module.exports = db;
const Sequelize = require('sequelize');
const db = require('../config/dbbook');

//定义模型,实现ORM
const BookModel = db.define('bookinfo',{
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
        //field: 'id'
    },
    isbn: {
        type: Sequelize.CHAR(13),
        allowNull: false
    },
    bookName: {
        type: Sequelize.STRING(200),
        allowNull: false,
        field: 'name'
    },
    author: {
        type: Sequelize.STRING(100),
        allowNull: false
    },
    press: {
        type: Sequelize.STRING(100),
        allowNull: false
    },
    price: {
        type: Sequelize.DECIMAL(7,2),
        allowNull: false
    },
    pubDate: {
        type: Sequelize.DATE,
        allowNull: false,
        field: 'pubdate'
    },
    imgPath: {
        type: Sequelize.STRING(255),
        field: 'imgpath'
    }
},{
    freezeTableName: true,
    timestamps: false
});

module.exports = BookModel;
const Sequelize = require('sequelize')
const Book = require('../model/bookModel')
const Op = Sequelize.Op; //导入Sequelize的查询操作符

//定义对象,用于完成CRUD操作
const bookOption = {
    //查询所有
    getBooks: async function(){ //函数返回值是Promise对象
        let result = Book.findAll({
            raw: true //不显示时间戳
        })
        return result
    },

    //增加图书
    addBook: async function(params){
        let result = Book.create({
            isbn: params.isbn,
            bookName: params.bookName,
            author: params.author,
            press: params.press,
            price: params.price,
            pubDate: params.pubDate,
            imgPath: params.imgPath
        })
        return result;
    },
    //删除图书
    delBook: async function(bid){
        let result = Book.destroy({
            where: {
                id: bid
            }
        })
        return result;
    },
    //批量删除图书
    batchBook: async function(id_list){
        let result = Book.destroy({
            where:{
                id: {
                    [Op.in]:id_list //将id在id_list集合中的记录删除
                }
            }
        })
    },
    //更新图书信息
    updateBook: async function (params){
            let result = Book.update({
                isbn: params.isbn,
                bookName: params.bookName,
                author: params.author,
                press: params.press,
                price: params.price,
                pubDate: params.pubDate
            },{
                where:{
                    id: params.id
                }
            })
    }
}

module.exports = bookOption;
const express = require('express');
const fs = require('fs');
const formidable = require('formidable');

const router = express.Router()

//导入bookOption对象
const bookOption = require('../../db/crud/bookOption')

/*
  增加图书:http://localhost:8089/bookapi/add
*/
router.post('/add',(req, res) => {
    let params = {
        isbn: req.body.isbn,
        bookName: req.body.bookName,
        author: req.body.author,
        press: req.body.press,
        price: req.body.price,
        pubDate: req.body.pubDate,
        imgPath: req.body.imgPath
    }
    bookOption.addBook(params).then((data)=>{
        res.send({
            code: data,
            msg: '添加成功!'
        })
    })
})
/*
   删除图书:http://localhost:8089/bookapi/del
*/
router.delete('/del',(req, res) => {
    bookOption.delBook(req.body.id).then((data)=> {
        res.send({
            code: data,
            msg: '删除成功!'
        })
    })
})
/*
  批量删除:http://localhost:8089/bookapi/batch
*/
router.delete('/batch',(req,res)=>{
    //1.获取id构成的字符串
    let idStr = req.body.ids
    //2.将字符串分隔成数组
    let id_list = idStr.split(',');

    bookOption.batchBook(id_list).then((data)=>{
        res.send({
            code: data,
            msg: '删除成功!'
        })
    })
})
/*
  更新图书:http://localhost:8089/bookapi/update
*/
router.put('/update',(req, res) => {
    let params = {
        id: req.body.id,
        isbn: req.body.isbn,
        bookName: req.body.bookName,
        author: req.body.author,
        press: req.body.press,
        price: req.body.price,
        pubDate: req.body.pubDate
    }
    bookOption.updateBook(params).then((data)=>{
        res.send({
            code: data,
            msg: '更新成功!'
        })
    })
})
/*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值