Как отправить файл с BLOB-объекта MySQL для загрузки конечному пользователю? - PullRequest
0 голосов
/ 11 февраля 2011

Как я могу отправить файл для скачивания конечному пользователю? Я реализовал форму представления страницы со столбцом данных в качестве сеанса БД. Этот столбец содержит один файл, который сохраняется как BLOB в базе данных MySQL.

При обработке actionforward и использовании файла сопоставления для таблицы с CV я могу получить доступ к содержимому файла по cv.getFileContent() Нужно ли отправлять данные побайтно пользователю? Как мне предложить файл для скачивания?

1 Ответ

1 голос
/ 11 февраля 2011

Вы должны использовать сервлет в качестве механизма загрузки.

Отправьте свою форму сервлету, используя Get или Post, затем в классе Servlet реализуйте doGet или doPost соответственно.

Используя Hibernate, извлекаем столбец как байтовый массив.

protected void doGet(HttpServletRequest req, HttpServletResponse resp) {

    //Getting data s byte Array;
    byte[] csvFile = daoService.getFile(id);

    resp.setContentType("text/csv");
    resp.setContentLength((int) csvFile.length());
    ServletOutputStream out;

    try {
        out = resp.getOutputStream();
        out.write(csvFile);
        out.flush();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        out.close();
        out.flush();
    }

}

Надеюсь, это поможет.

Обновление:

Вот как я нанес на карту byte[].

<property
    name="image"
    update="true"
    insert="true"
    not-null="false"
    unique="false"
    type="binary"
>
    <column name="image" />
</property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...