hbuild前后端照片上传,处理和下载
时间: 2024-06-09 18:06:10 浏览: 115
图像上传处理
前端照片上传处理:
1. 创建一个表单,包括一个上传文件的 input 标签和一个提交按钮。
2. 监听 input 标签的 change 事件,获取用户选择的文件。
3. 使用 FileReader API 将文件转换成 base64 编码的字符串。
4. 将 base64 编码的字符串作为参数发送给后端接口。
示例代码:
```html
<form>
<input type="file" id="file-input">
<button type="submit" onclick="handleUpload()">上传</button>
</form>
```
```javascript
function handleUpload() {
const fileInput = document.getElementById('file-input')
const file = fileInput.files[0]
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = function() {
const base64String = reader.result.split(',')[1]
// 发送 base64String 到后端接口
}
}
```
后端照片上传处理:
1. 接收前端发送过来的 base64 编码的字符串。
2. 使用 base64 解码将字符串转换成二进制数据。
3. 使用文件系统模块(如 Node.js 的 fs 模块)将二进制数据写入磁盘中。
示例代码(使用 Node.js 的 fs 模块):
```javascript
const fs = require('fs')
function handleUpload(req, res) {
const base64String = req.body.base64String
const buffer = Buffer.from(base64String, 'base64')
fs.writeFile('path/to/save/image.jpg', buffer, function(err) {
if (err) {
res.status(500).send('上传失败')
} else {
res.send('上传成功')
}
})
}
```
照片下载:
1. 前端发送请求到后端接口,请求需要下载的图片的地址或者 ID。
2. 后端根据地址或者 ID 找到对应的图片文件,读取文件内容。
3. 将文件内容作为响应体,设置 Content-Type 为图片类型。
示例代码(使用 Node.js 的 fs 模块):
```javascript
const fs = require('fs')
function handleDownload(req, res) {
const imagePath = 'path/to/image.jpg'
fs.readFile(imagePath, function(err, data) {
if (err) {
res.status(404).send('图片不存在')
} else {
res.setHeader('Content-Type', 'image/jpeg')
res.send(data)
}
})
}
```
阅读全文