【发布时间】:2016-08-14 14:22:33
【问题描述】:
我正在客户端使用 Spring Boot 和 AngularJS 开发一个 Rest API,我正在使用 Spring 使用下面的 RestController 将文件上传到 /resources/static/upload 并在客户端使用它们
@RestController
@CrossOrigin("*")
public class FilmController {
@Autowired
private FilmRepository filmRepository;
@RequestMapping(value = "/films", method = RequestMethod.POST)
public void saveFilm(@RequestParam("file") MultipartFile file) throws Exception {
File convFile = new File("src/main/resources/static/upload/"+file.getOriginalFilename());
convFile.createNewFile();
FileOutputStream fos = new FileOutputStream(convFile);
Blob blob = new SerialBlob(file.getBytes());
fos.write(file.getBytes());
fos.close();
System.out.println(convFile.getName());
filmRepository.save(new Film(convFile.getName(), blob));
}
@RequestMapping(value = "/films", method = RequestMethod.GET)
public List<Film> getAllFilms() {
return filmRepository.findAll();
}
}
这是我如何访问上传的图片“image.jpg”
<img src="http://localhost:8080/upload/image.jpg" />
但是,当我运行 mvn package 并启动我的应用程序 jar 文件时,我无法在客户端访问上传的图像,我得到 404 not found。
有人可以解释一下 Spring 如何存储和引用静态资源以及如何解决这个问题。
【问题讨论】:
-
你不能......你不能上传到类路径中的路径,该路径实际上将在 jar 内。
-
那么我在哪里可以上传我的文件并且仍然可以在客户端访问它们?
-
使用文件系统上的路径或合适的数据存储。
标签: java angularjs spring spring-mvc spring-boot