7.2 SpringBoot实现上传图片API + url映射本地路径registry.addResourceHandler
在Spring Boot中实现上传图片的API并将URL映射到本地路径,可以使用MultipartFile
接收上传的文件,并使用ResourceHandlerRegistry
将映射URL设置为本地路径。以下是一个简单的例子:
- 添加依赖(通常Spring Boot Starter Web已经包含了Spring MVC,所以不需要额外添加):
<!-- 如果使用Maven,请确保已经包含Spring Boot Starter Web -->
- 创建一个控制器来处理文件上传:
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class ImageUploadController {
private static final String UPLOAD_DIR = "/path/to/upload/dir"; // 设置上传文件夹路径
@PostMapping("/upload")
public @ResponseBody String handleFileUpload(@RequestParam("file") MultipartFile file) {
try {
String filename = file.getOriginalFilename();
String filePath = UPLOAD_DIR + "/" + filename;
file.transferTo(new File(filePath));
return "File uploaded successfully: " + filePath;
} catch (Exception e) {
e.printStackTrace();
return "File upload failed: " + e.getMessage();
}
}
}
- 配置
ResourceHandler
以映射URL到本地路径:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/images/**")
.addResourceLocations("file:" + UPLOAD_DIR + "/");
}
}
- 访问API:
上传图片:
POST /upload HTTP/1.1
Content-Disposition: form-data; name="file"; filename="example.jpg"
Content-Type: image/jpeg
[file content]
映射本地路径访问图片:
GET /images/example.jpg HTTP/1.1
以上代码实现了一个简单的文件上传API,并将上传的图片映射到本地路径以供访问。记得替换UPLOAD_DIR
为实际的上传文件夹路径。
评论已关闭