Неправильное отображение изображения с помощью блоба - PullRequest
0 голосов
/ 13 января 2020

Я создал API для загрузки изображения и API для получения изображения по ресурсу (FTP-сервер и весенняя загрузка). В front-end я использую reactjs и отображаю изображение по base64. но некоторые изображения, которые я загрузил, не могут быть отображены (в основном .png). когда я беру ответный снимок этого изображения и преобразую в base64, затем преобразую в изображения, но они не отображаются.

  • загрузка:

    • Ftp Store:
    @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());
    }
  • ImageResponse:
   @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;
    }

  • FTP получить файл:
        FileStoreConnectInfo connectInfo = new FileStoreConnectInfo(appProperties);
        try (FtpService ftpService = new FtpService(connectInfo)) {
            return ftpService.retrieveFileStream(filePath);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

...