Я схожу с ума, потому что провожу целый день и все еще не могу решить эту проблему. На мой взгляд, это правильный путь, и я также использовал абсолютный путь для изображения, например file: // something, но это тоже не сработало. Я хочу отображать изображения в объекте списка массивов. На первом рисунке изображение не отображается, хотя это правильный путь в консоли, а второе изображение - th: src = "$ {list.storedFilePath}", которое я использовал для тега изображения. Я новичок в тимелеафе, и я искал в Google и просмотрел все ресурсы, но все еще не смог решить. (Ps Я пробовал th: src = "'/' + $ {list.storedFilePath}", но это тоже не сработало. )
Это моя страница просмотра
<div class="row cat-pd" onclick="location.href='productDetail.do'">
<div class="col-md-6" style="width:280px;" th:each="list:${list}">
<div class="small-box-c">
<div class="small-img-b">
<img th:src="'http://localhost:8090/'+${list.storedFilePath}" class="img-responsive" alt="Image"/>
</div>
<div class="dit-t clearfix">
<div class="left-ti">
<h4 th:text="${list.pName}"></h4>
<p>By <span>Beko</span> under <span>Lights</span></p>
</div>
<a th:text="${list.price}+'원(하루)'"> <br>
</a>
</div>
</div>
</div>
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer{
@Bean
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setDefaultEncoding("UTF-8");
commonsMultipartResolver.setMaxUploadSizePerFile(5 * 1024 * 1024);
return commonsMultipartResolver;
}
@Component
public class FileUtils {
public List<FileDto> parseFileInfo(int pNo, MultipartHttpServletRequest multipartHttpServletRequest) throws Exception{
if(ObjectUtils.isEmpty(multipartHttpServletRequest)) {
return null;
}
List<FileDto> fileList = new ArrayList<>();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");
ZonedDateTime current = ZonedDateTime.now();
String path = "images/"+current.format(format);
File file1 = new File(path);
if(file1.exists() == false){
file1.mkdirs();
}
Iterator<String> iterator = multipartHttpServletRequest.getFileNames();
String newFileName, originalFileExtension, contentType;
while(iterator.hasNext()){
List<MultipartFile> list = multipartHttpServletRequest.getFiles(iterator.next());
for (MultipartFile multipartFile : list){
if(multipartFile.isEmpty() == false){
contentType = multipartFile.getContentType();
if(ObjectUtils.isEmpty(contentType)){
break;
}
else{
if(contentType.contains("image/jpeg")) {
originalFileExtension = ".jpg";
}
else if(contentType.contains("image/png")) {
originalFileExtension = ".png";
}
else if(contentType.contains("image/gif")) {
originalFileExtension = ".gif";
}
else{
break;
}
}
newFileName = Long.toString(System.nanoTime()) + originalFileExtension;
FileDto file = new FileDto();
file.setpNo(pNo);
file.setFileSize(multipartFile.getSize());
file.setOrigin(multipartFile.getOriginalFilename());
file.setStoredFilePath(path + "/" + newFileName);
fileList.add(file);
file1 = new File(path + "/" + newFileName);
multipartFile.transferTo(file1);
}
}
}
return fileList;
}
}
контроллер
@RequestMapping("/viewProductList.pr")
public ModelAndView selectProductList(@RequestParam int cNo) throws Exception{
ModelAndView mv = new ModelAndView("/productCategory");
List<ProductDto> list = pService.selectProductList(cNo);
mv.addObject("list", list);
return mv;
}
```[![enter image description here][1]][1]
[1]: https://i.stack.imgur.com/8lSXk.png