![](/img/trans.png)
[英]resource files under webapp/WEB-INF or src/main/resources?
[英]Can't access image file from src/main/webapp/WEB-INF/resources/img in controller to display in jsp
我嘗試顯示src/main/webapp/WEB-INF/resources/img/
文件夾中的圖像(不同於src/main/resources
)
@Controller
@RequestMapping("/items")
public class ItemsController {
@GetMapping( "/images/{itemId}")
@ResponseBody
public byte[] getItemImageById(@PathVariable long itemId) throws IOException {
BufferedImage originalImage =
ImageIO.read(
new File("/WEB-INF/resources/img/" + itemId + ".png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( originalImage, "png", baos );
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
return imageInByte;
}
}
<img src='${pageContext.request.contextPath}/items/images/1'/>
它不起作用 - 沒有圖像,但是如果我用這樣的絕對路徑替換File
構造函數中的路徑: C://.../some_file.png
它工作正常。
您無法通過“文件”讀取您需要通過ServletContext 的圖像。
@Controller
@RequestMapping("/items")
public class ItemsController {
@Autowired
ServletContext context;
@GetMapping( "/images/{itemId}")
@ResponseBody
public byte[] getItemImageById(@PathVariable long itemId) throws IOException {
BufferedImage originalImage =
ImageIO.read(context.getResourceAsStream("/WEB-INF/resources/img/" + itemId + ".png"));
// your original code
}
}
另一種對我有用的方法是:
@Autowired
ResourceLoader resourceLoader;
Resource resource = resourceLoader.getResource(
"/WEB-INF/resources/img/" + itemId + ".png");
String path = resource.getFile().getPath();
return Files.readAllBytes(Paths.get(path));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.