HTTP请求接收图片到生成Markdown格式的全流程(AI)
通过以上方案,可实现从HTTP请求接收图片到生成Markdown格式的完整链路,满足技术文档、博客系统等场景的自动化图片处理需求。目标:通过HTTP接口上传图片,自动生成MD格式的图片引用代码(支持Base64或图床链接)。POST /convert-to-md (上传图片)生成Base64字符串。
·
一、场景与架构设计
目标:通过HTTP接口上传图片,自动生成MD格式的图片引用代码(支持Base64或图床链接)。
技术栈:
- HTTP解析:Spring Boot(Java)处理上传请求
- 图片转MD:Java原生代码实现Base64编码或图床存储
客户端(浏览器) → HTTP上传图片 → Spring Boot服务器 → 生成MD格式 → 返回结果
二、核心代码实现
- Spring Boot 文件上传接口
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
@RestController
public class ImageToMdController {
// 图床服务地址(示例)
private static final String IMAGE_HOST = "https://img.example.com/";
/**
* 上传图片并生成MD格式
* @param file 上传的图片文件
* @param encodeType 编码类型(base64或url)
*/
@PostMapping("/convert-to-md")
public Map<String, String> convertImageToMd(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "encodeType", defaultValue = "url") String encodeType) {
Map<String, String> result = new HashMap<>();
try {
// 1. 校验文件类型
if (!file.getContentType().startsWith("image/")) {
throw new IllegalArgumentException("仅支持图片文件");
}
// 2. 生成MD格式代码
String mdCode;
if ("base64".equalsIgnoreCase(encodeType)) {
mdCode = generateBase64Md(file);
} else {
mdCode = generateUrlMd(file);
}
result.put("code", "200");
result.put("md", mdCode);
} catch (Exception e) {
result.put("code", "500");
result.put("error", e.getMessage());
}
return result;
}
// 生成Base64格式MD代码
private String generateBase64Md(MultipartFile file) throws Exception {
byte[] bytes = file.getBytes();
String base64 = java.util.Base64.getEncoder().encodeToString(bytes);
return String.format("",
file.getOriginalFilename(),
file.getContentType().split("/"), // 提取图片类型(如png)
base64);
}
// 生成图床链接MD代码(需实现上传到图床)
private String generateUrlMd(MultipartFile file) throws Exception {
// 模拟上传到图床并返回URL(实际需调用图床API)
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
String imageUrl = IMAGE_HOST + fileName;
return String.format("", file.getOriginalFilename(), imageUrl);
}
}
- HTTP请求解析流程
结合前文手动解析逻辑,Spring Boot已自动完成以下步骤:
- 解析请求体:自动处理multipart/form-data格式
- 提取文件:通过MultipartFile对象获取图片字节流
- 处理编码:根据参数选择Base64或图床链接
三、客户端调用示例.
1. 使用curl测试
curl -X POST -F "file=@/path/to/image.png" http://localhost:8080/convert-to-md?encodeType=base64
2. 返回结果
{
"code": "200",
"md": ""
}
四、扩展功能实现
- 批量转换工具(Java实现)
public class BatchImageConverter {
public static void main(String[] args) {
// 从文件夹读取图片
File dir = new File("images");
for (File image : dir.listFiles()) {
// 调用HTTP接口上传并获取MD代码
String md = HttpUtil.post("http://localhost:8080/convert-to-md", image);
System.out.println(md);
}
}
}
- 安全性增强
// 在Controller中添加以下校验
if (file.getSize() > 10 * 1024 * 1024) { // 限制10MB
throw new IllegalArgumentException("文件大小超过限制");
}
// 过滤危险文件名
String fileName = file.getOriginalFilename();
if (fileName.contains("..") || fileName.contains("/")) {
throw new IllegalArgumentException("非法文件名");
}
五、技术结合点总结
六、完整流程图
通过以上方案,可实现从HTTP请求接收图片到生成Markdown格式的完整链路,满足技术文档、博客系统等场景的自动化图片处理需求。
更多推荐
所有评论(0)