Идентификация того же образа при входе в качестве составного файла в запросе весенней загрузки java - PullRequest
0 голосов
/ 02 апреля 2020

Я создаю приложение с пружинной загрузкой, где я делаю OCR изображения. Мой запрос запрашивает составной файл. Когда я получаю многокомпонентный файл, мне нужно знать, обработал ли я то же изображение.

Я создаю MultipartEntity и ha sh того же самого. Я верил, что в следующий раз, если тот же файл придет. Я смогу создать ха sh и сравнить его.

Когда я пытаюсь это сделать. Я считаю, что его ха sh всегда отличается. Есть ли способ, которым я могу определить, что это изображение было ранее OCR, так что только на основе ha sh я получу результаты.

Request params as file in request:-
@RequestParam("file") MultipartFile file

Вот как я пытался создать ха sh:

  FileBody fileBody = new FileBody(new File(fileName));
  MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.STRICT);
  multipartEntity.addPart("file", fileBody);
  String requestBodyHash = PanUtil.getHashFromRequestBody(multipartEntity.toString());

  public static String getHashFromRequestBody(String req) {

    String requestBodyHash = null;
    try {
      requestBodyHash = generateSha2FromPayload(req);
    } catch (NoSuchAlgorithmException | URISyntaxException e) {
      log.error("Exception occured while creating hash from request {}", e);
      throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, e.getMessage());
    }
    return requestBodyHash;
  }

  public static String generateSha2FromPayload(String json)
      throws URISyntaxException, NoSuchAlgorithmException {

    MessageDigest md = MessageDigest.getInstance("SHA-256");
    byte[] digest = md.digest(json.getBytes(StandardCharsets.UTF_8));
    return toHexString(digest);
  }

1 Ответ

0 голосов
/ 04 апреля 2020

Я использовал приведенный ниже код, чтобы найти тот же самый sh изображения.

  public static String toHexString(byte[] hash) {

    // Convert byte array into signum representation
    BigInteger number = new BigInteger(1, hash);

    // Convert message digest into hex value
    StringBuilder hexString = new StringBuilder(number.toString(16));

    // Pad with leading zeros
    while (hexString.length() < 32) {
      hexString.insert(0, '0');
    }
    return hexString.toString();
  }

Вызовите эту функцию. Это всегда даст один и тот же гекс.

toHexString(file.getBytes())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...