Да, к сожалению, я не знаю формат вашей таблицы, однако мы должны иметь возможность создать подготовленный оператор, который получает необработанные байты файла из базы данных. Далее будет получен байтовый массив из базы данных, а затем, при необходимости, создан новый файл из необработанных байтов.
- Измените fileName на правильное имя столбца для имени файла.
- Измените fileContent на имя столбца для байтового массива.
- Убедитесь, что fileContent - это тип varbinary.
- Заменить null в моей ссылке на скачивание (Connection, String) допустимой ненулевой ссылкой на Connection.
public static void main(String[] args) {
try {
byte[] download = download(null, "test");
Path output = Paths.get("my", "output", "file.pdf");
Files.write(output, download, StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW);
} catch (IOException | SQLException e) {
throw new RuntimeException("Uh oh something went wrong!", e);
}
}
static byte[] download(Connection connection, String fileName) throws SQLException {
try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM fileStore WHERE fileName = ?")) {
statement.setString(1, fileName);
try (ResultSet results = statement.getResultSet()) {
if (results.next()) {
return results.getBytes("fileContent");
}
}
}
throw new IllegalStateException("No file can be found for this name.");
}