Вопрос по download, jsp, spring-mvc, java – Как скачать файл с URL, используя Spring MVC?

2

У меня есть вариант загрузки в моем JSP, как это

<a href='<c:url value="/licensing/download.sp?name=${namelist.name}&downloadUrl=${namelist.url}"/>'>

<img src="/images/download.gif" alt="Download" border="0" align="right">

В приведенном выше «url» расположение файла, а имя - имя файла. При нажатии кнопки загрузки в jsp iam вызывается метод загрузки контроллера, в контроллере

public ModelAndView download(HttpServletRequest request, HttpServletResponse response, DevTechBean devTechBean) throws Exception {
        cat.debug("MySuiteListController: download: begin");
        ModelAndView modelView = super.handleLicensingRequest(request, response);
        String name = request.getParameter("name");

        String url1 = request.getParameter("downloadUrl");
        cat.debug(" download: url ="+url1);

        String downloadurl1="https://my.net:8869"+url1;
        cat.debug(" download: downloadurl ="+downloadurl1);
    try{
        URL url = new URL(downloadurl1);  
        //response.setHeader("Content-Type", "text/csv");  
        response.setHeader("Content-disposition", "attachment;filename="+name);
        URLConnection connection = url.openConnection();
        InputStream stream = connection.getInputStream();
        BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
        int len;
        byte[] buf = new byte[1024];
        while ((len = stream.read(buf)) > 0) {
          outs.write(buf, 0, len);
        }
        outs.close();
    }
    catch (MalformedURLException e) { 
        cat.error("Error occurrred in url");

    } 
    catch (IOException e) { 
        cat.error("Error occurrred ");

    }
        String viewName = "swl_download";
    modelView.setViewName(viewName);
return modelView;       

}

Но когда я нажимаю на загрузку, я получаю исключение файла не найдено. Я думаю, что проблема связана со значением URL. В вышеупомянутом iam, имеющем значение downloadurl = / files / download / hai.txt

когда я даю

<a href="${namelist.url}"/>
<img src="/images/download.gif" alt="Download" border="0" align="right"></a><br/><br/></td>

при нажатии файл открывается в браузере с URLhttps://my.net:8869//files/download/hai.txt(but здесь для href iam даю только эту ссылку & quot; /files/download/hai.txt" не знаю, как вся ссылка идет.

но если дать ссылку, как это, чтобы вызвать контроллер для открытия этого файла, как всплывающее окно.

<a href='<c:url value="/download.sp?name=${namelist.name}&downloadUrl=${namelist.url}"/>'>

это получение файла не найдено исключение. Я думаю, это связано с тем, что downloadUrl.so я добавил, как это выше

String downloadurl1="https://my.net:8869"+url1;

Но я получаю файл не найти исключение. Пожалуйста, помогите мне решить эту проблему.

Вы не пропустили контекст? (лицензирование какmy.net:8869/licensing/...) Francisco Spaeth
чего-то не хватает в строке 1 .. Felix Christy
я используюgetResourceAsstream()получить текстовый файл. Ved
@FelixChristy: спасибо, я отредактировал Rahul
@jerry: как это реализовать в соответствии с моими потребностями Rahul

Ваш Ответ

2   ответа
0

Это просто псевдокод. Измените его в соответствии с вашими потребностями.

 InputStream is = getClass().getResourceAsStream("filename");

Сначала попытайтесь выяснить, какой метод getClass () указывает на какой каталог. (Не уверен, но он должен быть ДОМОЙ вашего приложения?). Затем поместите файл в то же место, если это не так.

Надеюсь, это поможет. источник

1

Попробуй это:

@RequestMapping(value="/viewAttach", method = RequestMethod.GET)
public ModelAndView viewAttach(@RequestParam(value="article_id", required = true) String article_ref, HttpSession session, HttpServletResponse response) 
{

    /* *** Check Session *** */
    try {

        // Direclty from pier.content.GetContent written by ang94402

        URL url = new URL(binaryURL);           
        response.setHeader("Content-disposition", "attachment;filename=" + binary.getName());

        //Set the mime type for the response
        response.setContentType("application/pdf");

        // URLConnection connection = url.openConnection();
        InputStream is = url.openStream();

        BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
        int len;
        byte[] buf = new byte[1024];
        while ( (len = is.read(buf)) > 0 ) {
            outs.write(buf, 0, len);
        }
        outs.close();

    } catch (MalformedURLException e) {
        logger.error("Error ModelAndView.viewMain - MalformedURLException : " + e.toString() + " -- " + e.getStackTrace()[0].toString());
        return null;
    } catch (IOException e) {
        logger.error("Error ModelAndView.viewMain - IOException : " + e.toString() + " -- " + e.getStackTrace()[0].toString());
        return null;
    }


    return null;

}

Похожие вопросы