前后端分离实现上传图片的功能

本文介绍了前后端分离模式下如何实现图片上传功能。前端通过formData传递图片和分类信息给后端,后端接收到数据后,对分类进行处理,并使用工具类将图片转化为统一的jpg格式并调整大小,然后保存到指定文件夹。
摘要由CSDN通过智能技术生成

前后端分离实现上传图片的功能

思路

  1. 前端上传图片和分类名称,保存图片文件,将数据追加到formData传给后端,回调清空。
  2. 后端对图片和分类名分开进行处理。分类名进行普通的增加。图片需要借助工具类转化成统一格式,再构造出“id+.jpg”的格式上传到文件夹中。

前端

实现效果

    <div class="panel panel-warning addDiv">
        <div class="panel-heading">新增分类</div>
        <div class="panel-body">
            <table class="addTable">
                <tr>
                    <td>分类名称</td>
                    <td><input  @keyup.enter="add" v-model.trim="bean.name" type="text" class="form-control"></td>
                </tr>
                
前后端分离时,上传图片的一种常见做法是通过前端将图片转换为Base64编码,并将编码后的数据作为请求的参数发送给后端。后端接收到请求后,解码Base64数据,并将其保存为文件。 以下是一个示例的前端代码,使用JavaScript实现图片上传并将其转换为Base64编码: ```javascript // HTML部分 <input type="file" id="imageUpload" accept="image/*"> // JavaScript部分 const imageUpload = document.getElementById('imageUpload'); imageUpload.addEventListener('change', (event) => { const file = event.target.files[0]; const reader = new FileReader(); reader.onloadend = function () { // 图片加载完成后的回调函数 const base64String = reader.result; // 获取Base64编码 // 将base64String发送给后端 // ... }; reader.readAsDataURL(file); // 读取文件并转换为Base64编码 }); ``` 在后端,你可以使用你熟悉的编程语言和框架来接收Base64编码的数据,并进行解码和保存。以下是一个示例的后端代码,使用Node.js和Express框架来处理图片上传请求: ```javascript const express = require('express'); const fs = require('fs'); const app = express(); // 处理图片上传请求 app.post('/upload-image', (req, res) => { const base64Data = req.body.base64Data; // 假设前端发送的Base64编码数据在请求体中名为base64Data // 解码Base64数据 const imageData = Buffer.from(base64Data, 'base64'); // 保存为文件 fs.writeFile('uploaded-image.jpg', imageData, (err) => { if (err) { console.error(err); res.status(500).send('Image upload failed.'); } else { res.send('Image uploaded successfully.'); } }); }); app.listen(3000, () => { console.log('Server is running on port 3000.'); }); ``` 这只是一个简单的示例,你可以根据自己的需求和技术栈进行相应的调整和优化。注意,在实际应用中,你可能还需要添加文件类型验证、文件大小限制等的逻辑来增强上传功能的安全性和鲁棒性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值