2014-01-22 66 views
1

我正在嘗試使用代碼。但是,爲什麼網頁從不允許訪問任何本地文件。從我的電腦文件夾在JSP頁面上顯示圖像

意味着,如果你寫

<img src="c:\ImageFolder\Angelica.jpg"/> 
在jsp文件

,它不會工作。

爲什麼不是?有沒有辦法讓我從C驅動器檢索圖像並顯示在網頁上?

+0

嘗試從d驅動器檢索圖像和checking..Probably u需要在c盤 –

+0

管理員訪問權限有效嗎?讓我們知道 –

+0

@ user3040563它不也行。 – newbieinjavaversion2

回答

4

img標籤的src屬性用於指代源的相對路徑或網址,即源可以位於您的Web容器內或由其他網站託管。您不能使用源文件的絕對路徑,因爲您無法引用容器外的文件。

作爲解決方法,您可以創建一個servlet,它可以從Web容器外部加載文件,然後將文件寫入/流式傳輸到您的響應中。您將爲servlet提供文件路徑,並且該servlet將爲您提供該文件。

假設,如果你創建了文件服務名爲「FileServlet」一個servlet,這FileServlet採取「路徑」作爲參數來獲取文件,你img標籤將是這個樣子:

<img scr="FileServet?path=c:\\parentDirectory\file.jpg"> 

參考: File Servlet by BalusC進行詳細的工作。

+0

謝謝! :) 現在我明白了。但是我遇到了問題。請參閱http://stackoverflow.com/q/21326214/3188711謝謝! – newbieinjavaversion2

+0

謝謝........ – Prashant

1
> :)Try 

<html> 
    <%@page import="java.io.File"%> 
    <%@page import="java.io.IOException"%> 
    <%@page import="java.awt.image.BufferedImage"%> 
    <%@page import="javax.imageio.ImageIO"%> 
    <%@page import="java.io.ByteArrayOutputStream"%> 

    <%@page import="java.math.BigInteger"%> 
    <%@page import="javax.xml.bind.DatatypeConverter"%> 
    <%@page import="java.awt.image.BufferedImage"%> 

    <head> 

    </head> 
    <body> 
    <% 
    //write image 
    try{ 
     String imgName="C:\\PATROL_SITE_IMAGES\\17-Jun-2016\\7588519616\\249_R.jpg"; 
     BufferedImage bImage = ImageIO.read(new File(imgName));//give the path of an image 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     ImageIO.write(bImage, "jpg", baos); 
     baos.flush(); 
     byte[] imageInByteArray = baos.toByteArray(); 
     baos.close();         
     String b64 = DatatypeConverter.printBase64Binary(imageInByteArray); 
     %> 
     <img class="img-responsive" src="data:image/jpg;base64, <%=b64%>"/>        
     <% 
    }catch(IOException e){ 
     System.out.println("Error: "+e); 
    } 


    %> 


    </body> 
    </body> 
    </html>enter code here 
相關問題