Blob(Binary Large Object)是存储二进制数据的对象,常用于存储图像、音频、视频等多媒体文件。在Web开发中,Blob对象通常通过JavaScript的Blob API创建和操作。
async function uploadImage(blob) {
const formData = new FormData();
formData.append('image', blob, 'image.png'); // 第三个参数是文件名
try {
const response = await fetch('https://your-api-endpoint/upload', {
method: 'POST',
body: formData
// 注意:不要手动设置Content-Type,浏览器会自动设置multipart/form-data
});
return await response.json();
} catch (error) {
console.error('Upload failed:', error);
throw error;
}
}
async function uploadImageAsBase64(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = async () => {
const base64String = reader.result.split(',')[1]; // 移除data:image/png;base64,前缀
try {
const response = await fetch('https://your-api-endpoint/upload', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
image: base64String,
filename: 'image.png',
mimeType: 'image/png'
})
});
resolve(await response.json());
} catch (error) {
reject(error);
}
};
reader.onerror = reject;
reader.readAsDataURL(blob);
});
}
const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });
// 处理multipart/form-data方式上传
app.post('/upload', upload.single('image'), (req, res) => {
console.log('Received file:', req.file);
// 处理文件...
res.json({ success: true, file: req.file });
});
// 处理Base64方式上传
app.post('/upload-base64', express.json(), (req, res) => {
const { image, filename, mimeType } = req.body;
// 解码Base64并保存文件...
res.json({ success: true });
});
app.listen(3000, () => console.log('Server running on port 3000'));
@RestController
@RequestMapping("/api")
public class ImageController {
@PostMapping("/upload")
public ResponseEntity<String> uploadImage(@RequestParam("image") MultipartFile file) {
try {
// 处理上传的文件
return ResponseEntity.ok("File uploaded successfully");
} catch (Exception e) {
return ResponseEntity.status(500).body("Upload failed");
}
}
@PostMapping("/upload-base64")
public ResponseEntity<String> uploadBase64Image(@RequestBody ImageUploadRequest request) {
try {
byte[] imageBytes = Base64.getDecoder().decode(request.getImage());
// 处理解码后的字节数组
return ResponseEntity.ok("Base64 image uploaded successfully");
} catch (Exception e) {
return ResponseEntity.status(500).body("Upload failed");
}
}
}
class ImageUploadRequest {
private String image;
private String filename;
private String mimeType;
// getters and setters
}
通过以上方法,您可以轻松地将Blob图像通过REST服务进行传输和处理。根据具体需求选择最适合的实现方式。
没有搜到相关的文章