Как читать тип изображения Blob из базы данных в FileInputStream - PullRequest
0 голосов
/ 16 октября 2018

Я хочу вставить изображение из базы данных в файл Microsoft Word.Формат изображения - Blob.Я делаю MS Word файл, используя Apache POI.для вставки изображения в файл MS Word требуется

XWPFRun run.addPicture( new FileInputStream(ImageFile) , ImageFormat, ImageName, Units.toEMU(650), Units.toEMU(80));

Для этой функции необходим объект FileInputStream в качестве параметра.Так как же сделать так, чтобы «Тип блоба изображения» можно было читать в FileInputStream?Я преобразовал его в «файл», используя File Class и в объект OutputStream, но это не работает.это мой последний код

................    
XWPFRun run1 = paragraph.createRun();        
    File image = get_dataImage();
    String gambar = image.toString();
    int imgFormat = getImageFormat(nama_gambar());
    run1.addPicture( new FileInputStream(image) , imgFormat, nama_gambar(), Units.toEMU(650), Units.toEMU(80));
    CTDrawing drawing = run1.getCTR().getDrawingArray(0);
    CTGraphicalObject graphicalobject = drawing.getInlineArray(0).getGraphic();
    CTAnchor anchor = getAnchorWithGraphic(graphicalobject, nama_gambar(), 
    Units.toEMU(600), Units.toEMU(70), 
    Units.toEMU(-5), Units.toEMU(-10));
                drawing.setAnchorArray(new CTAnchor[]{anchor});
                drawing.removeInline(0);
........................

функция получить файл изображения

public static File get_dataImage() throws SQLException, IOException {
        File file = null;
        Connection conn = Koneksi.getKoneksi();
        String sql = "SELECT*FROM setting";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        if (resultSet.next()) {
            Blob imageBlob = resultSet.getBlob("file_gambar");
            byte [] array = imageBlob.getBytes( 1, ( int ) imageBlob.length() );
            file = File.createTempFile("something-", ".binary", new File("."));
        }
        return file;
    }

функция получить имя изображения

public String nama_gambar() throws SQLException {
        String nama_gambar = null;
        Connection conn = Koneksi.getKoneksi();
        String sql = "SELECT*FROM setting";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        if (resultSet.next()) {
            nama_gambar = resultSet.getString("nama_gambar");
        }
        return nama_gambar;
    }

это результат enter image description here

1 Ответ

0 голосов
/ 18 октября 2018

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

public static InputStream get_dataImage() throws SQLException, IOException {
            InputStream in = null;
            Connection conn = Koneksi.getKoneksi();
            String sql = "SELECT*FROM setting";
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                Blob imageBlob = resultSet.getBlob("file_gambar");
                in = imageBlob.getBinaryStream();
            }
            return in;
        }
...