2017-01-31 14 views
0

Я искал решение, но не смог найти какое-либо решение.Открытие файла с весны URL-адрес

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

данных в БД, как:

"filePath" : "C:/myfiles/Resume_Vipul.docx" 

доступа к ней в передней части, как:

<c:forEach var="ser" items="${services}" varStatus="status"> 
<td class="text-center"><a href='<spring:url value="${ser.filePath}" />'>file</a></td> 
</c:forEach> 

, когда я нажимаю на Url он дает мне ошибку, как:

Not allowed to load local resource: file:///C:/myfiles/Resume_Vipul.docx 

Каков правильный способ выполнения этого действия. любая помощь будет оценена.

+0

Добавить отображение сервлета в ваш каталог в вашем 'web.xml' и использовать псевдоним отображения на ваш' $ {ser.filePath} "' –

ответ

0

Вы должны послать запрос на контроллер принимает имя файла в качестве параметра и отправить обратно байты в ответ, что-то вроде этого,

ServletContext cntx= req.getServletContext(); 
    // Get the absolute path of the image 
    String filename = cntx.getRealPath("Images/button.png"); 
    // retrieve mimeType dynamically 
    String mime = cntx.getMimeType(filename); 
    if (mime == null) { 
    resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
    return; 
    } 

    resp.setContentType(mime); 
    File file = new File(filename); 
    resp.setContentLength((int)file.length()); 

    FileInputStream in = new FileInputStream(file); 
    OutputStream out = resp.getOutputStream(); 

    // Copy the contents of the file to the output stream 
    byte[] buf = new byte[1024]; 
    int count = 0; 
    while ((count = in.read(buf)) >= 0) { 
    out.write(buf, 0, count); 
    } 
out.close(); 
in.close(); 

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

+0

. Я попытаюсь реализовать это –