This is wrong:
preparedStatment.setBytes(10, inpStream.toString().getBytes());
You are storing the result of the InputStream#toString() as bytes in the DB. The InputStream#toString() does not return the file's contents as you seem to think, instead it returns the default classname@hashcode representation inherited from Object#toString().
You need PreparedStatement#setBinaryStream() instead:
preparedStatement.setBinaryStream(10, inpStream);
Then you can retrieve it by ResultSet#getBinaryStream():
InputStream inpStream = resultSet.getBinaryStream("columnname");
Or if you really need PreparedStatement#setBytes(), then you would need to write the InputStream to a ByteArrayOutputStream the usual way first and then get the bytes by its toByteArray() method. But this is not memory efficient per se.