сервлет показывает java.io.FileNotFoundException:? E: \ guru99 \ test.txt (неверный синтаксис имени файла, имени каталога или метки тома) - PullRequest
0 голосов
/ 16 апреля 2019

Мой сервлет показывает это исключение, но файл существует в этом месте.

java.io.FileNotFoundException: ?E:\guru99\test.txt (The filename, directory name, or volume label syntax is incorrect)

Код сервлета,

   @WebServlet(urlPatterns = {"/image_download"})
    public class image_download extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            String gurufile = "test.txt";
                    String gurupath = "‪E:\\guru99\\";
            response.setContentType("APPLICATION/OCTET-STREAM");
            response.setHeader("Content-Disposition", "attachment; filename=\"" + gurufile + "\"");

            FileInputStream fileInputStream = new FileInputStream(gurupath + gurufile);

            int i;
            while ((i = fileInputStream.read()) != -1) {
                out.write(i);
            }
            fileInputStream.close();
            out.close();
        }


        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }

    }

Я хочу скачать файл по предоставленной мной ссылке.

1 Ответ

0 голосов
/ 17 апреля 2019

Ваша проблема дублирует этот вопрос SO

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

Я вручную набрал значения для String gurufile & String gurupath, а не скопировал ваш код, и он успешно работал.Кажется, что Culprit String gurupath.

Второй момент - использование try-with-resource (хотя это не имеет никакого отношения к вашей проблеме) вместо явной попытки закрыть ресурсы

response.setContentType("text/html");
    String gurufile = "test.txt";
    String gurupath = "D:\\guru99\\";
    response.setContentType("APPLICATION/OCTET-STREAM");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + gurufile + "\"");
    try (FileInputStream fileInputStream = new FileInputStream(gurupath + gurufile);
        PrintWriter out = response.getWriter();) {
        int i;
        while ((i = fileInputStream.read()) != -1) {
        out.write(i);
        }
    }

Копировать - вставьте мой код, чтобы увидеть, решит ли это вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...