Java скачать файл из базы данных на ПК - PullRequest
0 голосов
/ 22 октября 2019

Я получаю изображение (jpeg или pdf) из базы данных и хочу загрузить его на ПК. Однако изображение не распознается при !file.exists(). Это указывает на неправильность File file = new File(resourceDetail.getResourseImage());. Как правильно это кодировать, пожалуйста?

Примечание: resourceDetail.getResourseImage() - это фактическое изображение, а не путь.

Мой код:

        resourceDetail = MySQLConnection.resourceDownload(fileID);

        FileInputStream stream = null;
        try {
            File file = new File(resourceDetail.getResourseImage());
            System.out.println("resourceDetail.getResourseImage(): " + resourceDetail.getResourseImage());

            if (!file.exists()) {
                System.out.println("File does not exist: ");
//              context.addMessage(new ErrorMessage("msg.file.notdownloaded"));
//              context.setForwardName("failure");
            } else {
                System.out.println("File exist: ");
                if (resourceDetail.getResourseImageType().equals("pdf")){
                    System.out.println("pdf: ");
                    response.setContentType("application/pdf");
                    response.setHeader("Content-Disposition", "attachment; filename='myfile.pdf'");
                }else{
                    System.out.println("jpeg: ");
                    response.setContentType("image/jpeg");
                    response.setHeader("Content-Disposition", "attachment; filename='myfile.jpg'");
                }
//              response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
                System.out.println("stream: ");
                stream = new FileInputStream(file);
                response.setContentLength(stream.available());
                OutputStream os = response.getOutputStream();      
                os.close();
                response.flushBuffer();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

Хотя это решение не дает прямого ответа на проблему с Java, оно дает мне решение. Я начал с использования jQuery, который работал с Chrome, а не IE. Мне сказали, что невозможно активно загружать изображения с помощью jQuery, и что мне нужно сделать это через Java. Тем не менее, я теперь нашел:

http://danml.com/download.html

С уважением,

Глин

0 голосов
/ 23 октября 2019

resourceDetail.getResourseImage() получил строковые данные, вы можете напрямую записать данные в ответ, используя: OuputStream#write(bytes). В вашем случае просто используйте · os.write (resourceDetail.getResourseImage (). GetByets ()); `, чтобы сделать это.

Пример кода:

resourceDetail = MySQLConnection.resourceDownload(fileID);
try {
    System.out.println(
            "resourceDetail.getResourseImage(): " + resourceDetail.getResourseImage());

        if (resourceDetail.getResourseImageType().equals("pdf")) {
            System.out.println("pdf: ");
            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition", "attachment; filename='myfile.pdf'");
        } else {
            System.out.println("jpeg: ");
            response.setContentType("image/jpeg");
            response.setHeader("Content-Disposition", "attachment; filename='myfile.jpg'");
        }
        response.setContentLength(resourceDetail.getResourseImage().length());
        OutputStream os = response.getOutputStream();
        os.write(resourceDetail.getResourseImage().getBytes());
        os.close();
        response.flushBuffer();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (stream != null) {
        try {
            stream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...