public String getContentType(InputStream inputStream, String fileName) {
    String contentType = getContentType(fileName);

    if (!contentType.equals(ContentTypes.APPLICATION_OCTET_STREAM)) {
      return contentType;
    }

    List<MimeType> mimeTypes = new ArrayList<MimeType>(MimeUtil.getMimeTypes(inputStream));

    MimeType mimeType = mimeTypes.get(0);

    if ((mimeTypes.size() > 1) && (mimeType instanceof TextMimeType)) {
      mimeType = mimeTypes.get(1);
    }

    contentType = mimeType.getMediaType() + StringPool.SLASH + mimeType.getSubType();

    if (contentType.equals(ContentTypes.APPLICATION_OCTET_STREAM)) {
      contentType = getContentType(fileName);
    } else if (contentType.equals(ContentTypes.APPLICATION_ZIP)) {
      String contentTypeByFileName = getContentType(fileName);

      if (contentTypeByFileName.contains("vnd.openxmlformats")) {
        contentType = contentTypeByFileName;
      }
    }

    if (_log.isDebugEnabled()) {
      _log.debug("Content type " + contentType + " returned for " + fileName);
    }

    return contentType;
  }
  @SuppressWarnings("unchecked")
  @Override
  public String probeContentType(Path path) throws IOException {
    Collection<MimeType> mimeTypes = mimeUtil.getMimeTypes(path.toUri().toURL());
    if (null == mimeTypes || mimeTypes.size() <= 0) {
      return null;
    }

    MimeType mimeType = mimeTypes.iterator().next();
    return String.format("%s/%s", mimeType.getMediaType(), mimeType.getSubType());
  }