Я создал API для загрузки изображения и API для получения изображения по ресурсу (FTP-сервер и весенняя загрузка). В front-end я использую reactjs и отображаю изображение по base64. но некоторые изображения, которые я загрузил, не могут быть отображены (в основном .png). когда я беру ответный снимок этого изображения и преобразую в base64, затем преобразую в изображения, но они не отображаются.
@Override
public boolean storeFile(String filePath, InputStream fileIs) {
FileStoreConnectInfo connectInfo = new FileStoreConnectInfo(appProperties);
try (FtpService ftpService = new FtpService(connectInfo)) {
return ftpService.store(filePath, fileIs);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
получить изображение по ресурсу:
@GetMapping("/me/profile/avatar/download")
public ResponseEntity<Resource> download(@RequestParam String path){
ImageResponse response = userProfileService.download(path);
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(response.getResource());
}
@Getter @Setter
public class ImageResponse {
private Resource resource;
public ImageResponse() {}
}
public ImageResponse download(String avatarUrl) {
InputStream fis = userProfileStoreService.getFile(path + avatarUrl);
InputStreamResource resource = new InputStreamResource(fis);
ImageResponse response = new ImageResponse();
response.setResource(resource);
return response;
}
FileStoreConnectInfo connectInfo = new FileStoreConnectInfo(appProperties);
try (FtpService ftpService = new FtpService(connectInfo)) {
return ftpService.retrieveFileStream(filePath);
} catch (Exception e) {
throw new RuntimeException(e);
}