使用node的express中的multer中间件还有fromdata对象来实现上传图片

在使用from表单提交数据时,我们一般只能提交一些基本的文字数据,当我们想把一些文件(比如:图片)数据提交到后台时,我就要使用express中multer这个中间件
在使用这个中间件时,我要首先要安装开发环境

npm install --save multer

注: 要在使用express框架的情况才能使用这个中间件

下面是使用 multer 基本配置

前端页面

 <input type="file" name="logo" class="logo" >

前端页面的js

 $('.logo').change(function(){
        var formData = new FormData(); // 新建一个 formdata对象
        formData.append('filesa',$(this)[0].files[0]);  // 往formdata 中添加数据
        $.ajax({
            type:'post',
            data:formData,
            dataType: 'JSON',
            url:'/profile',
            // 设置兼容 让ajax在提交数据 时 不解析这个data
            processData: false,
            contentType: false,
            success(data){
                console.log(data);
            }
        })
    });

index.js(入口js文件)

const express = require('express');
const app = express();
const multer = require('multer');

router.js(路由js文件)

const express = require('express');
const router = express.Router();
const service = require('./service');
const multer  = require('multer');
var storage = multer.diskStorage({
    //表示图片上传后将保存的路径地址
    //设置上传文件路径后,uploads文件夹将会在服务器相对应的路径下创建
    //由于服务器文件夹的权限不同,如果自动创建失败,可以手动在相应的路径下手动创建文件夹
    destination: function (req, file, cb) {
        cb(null, './img')
    },
    //给上传的文件进行重命名,获取添加后缀名
    filename: function (req, file, cb) {
    	//
        //为了防止小概率文件名相同,可以再文件名当中拼接当前的时间戳,或在时间戳后面添加随机数,
        cb(null, file.originalname); // cb(null,'创建文件的名字')
    }
});
var upload = multer({ storage: storage });
router.post('/profile', upload.single('filesa'), function (req, res, next) {
    res.send({
        err:1,
        imgname:req.file.filename,
        msg:'上传图片成功'
    })
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端代码(Vue 3): ```html <template> <div> <input type="file" ref="fileInput" @change="handleFileUpload"> <button @click="uploadImage">上传图片</button> </div> </template> <script> import axios from 'axios'; export default { data() { return { selectedFile: null }; }, methods: { handleFileUpload(event) { this.selectedFile = event.target.files[0]; }, uploadImage() { const formData = new FormData(); formData.append('image', this.selectedFile); axios.post('/api/upload', formData) .then(response => { // 处理上传成功后的逻辑 }) .catch(error => { // 处理上传失败后的逻辑 }); } } }; </script> ``` 后端代码(Node.js + Express + MySQL): ```javascript const express = require('express'); const multer = require('multer'); const mysql = require('mysql'); const app = express(); const upload = multer({ dest: 'uploads/' }); // 创建MySQL连接 const connection = mysql.createConnection({ host: 'localhost', user: 'your_username', password: 'your_password', database: 'your_database' }); // 处理图片上传请求 app.post('/api/upload', upload.single('image'), (req, res) => { const file = req.file; const sql = 'INSERT INTO images (filename) VALUES (?)'; connection.query(sql, [file.filename], (error, results) => { if (error) { console.error(error); res.status(500).send('上传图片失败'); } else { res.send('上传图片成功'); } }); }); // 启动服务器 app.listen(3000, () => { console.log('服务器已启动'); }); ``` 注意事项: 1. 前端代码使用`<input type="file">`标签来选择文件,并使用`axios`库发送带有文件的`POST`请求到后端。 2. 后端代码使用`multer`中间件来处理文件上传,并将文件保存到服务器的`uploads/`目录下。 3. 后端代码使用`mysql`库连接MySQL数据库,并将上传成功的图片信息保存到数据库。请根据实际情况修改数据库配置。 4. 以上代码仅为示例,实际项目还需添加错误处理、文件类型验证、文件大小限制等相关逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值