Извлечение фотографий из MySQL с использованием Java - PullRequest
0 голосов
/ 29 марта 2020

У меня есть вопрос, связанный с получением файлов из MySQL с использованием JDB C. Мне удалось сохранить файл .png со своего рабочего стола и успешно извлечь его, но я не могу прочитать файл. Это показывает, что формат не поддерживается (даже если я могу открыть исходный файл без каких-либо проблем).

Вот код:

    PreparedStatement ps = con.prepareStatement("select * from project where files IS NOT NULL ");


    ResultSet rs = ps.executeQuery();
    rs.next();

    Clob c = rs.getClob(3);
    Reader r = c.getCharacterStream();


    FileWriter fw = new FileWriter("C:\\Users\\xxxl\\Pictures\\Picture1.png");
    int in;
    while ((in = r.read())!=-1)
        fw.write((char)in);

    fw.close();
    con.close();

    System.out.println("File successfully retrieved");

Любые идеи, что может быть причиной и как исправить это?

1 Ответ

1 голос
/ 29 марта 2020

Вы должны использовать FileOutpuStream, потому что вы должны писать байты не char. Также у вас должен быть столбец blob.

Как-то так должно работать

PreparedStatement ps = con.prepareStatement("select * from project where files IS NOT NULL ");


ResultSet rs = ps.executeQuery();
rs.next();

Blob c = rs.getBlob(3);
InputStream r = c.getBinaryStream();


FileOutputStream fw = new FileOutputStream ("C:\\Users\\xxxl\\Pictures\\Picture1.png");
int in;
byte[] readBytes = new byte[500];
while (r.read(readBytes)!=-1) {
    fw.write(readBytes);
}
fw.close();
con.close();

System.out.println("File successfully retrieved");

Импорт:

import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
...