2013-07-19 71 views
0

我想上傳到服務器...使用JSP無法獲取上傳的圖像文件的完整路徑在JSP

一個圖像在JSP:

input id="fileUpload" type="file" name="file" 

在Java:

File file = new File(request.getParameter("file")); 
    String path = file.getAbsolutePath(); 
    BufferedImage sourceImage = ImageIO.read(new File(path)); 
    ImageIO.write(sourceImage, "jpg", new File("E:/h.jpg")); 

如果使用Internet Explorer上傳圖片,它可以工作......但在Chrome中,Firefox和Safari瀏覽器顯示文件路徑「fakepath/filename.jpg」和圖像無法讀取。

+0

看到這個問題。它有助於http://stackoverflow.com/questions/3489133/full-path-from-file-input-using-jquery – karthick

+0

你有文件的原始字節,你可以將它保存在服務器端,然後獲取路徑。爲什麼需要知道上傳文件的用戶機器中的文件路徑。 – Jayesh

回答

2

在因特網Expolorer中,它或多或少意外地工作,因爲您可能在您訪問它的同一臺機器上運行應用程序。當您上傳文件時,Internet Explorer會發送實際文件名,例如C:\Users\Administrator\Desktop\Image.jpg。您的Web應用程序在同一臺計算機上運行,​​因此它可以從磁盤讀取該文件。

但是,Chrome和Firefox不希望將客戶端的完整路徑名暴露給應用程序,並且它們使用fakepath\Image.jpg。磁盤上沒有這樣的文件,這就是爲什麼Web應用程序無法讀取圖像。

你應該做的是從請求中提取不同部分,找到包含上傳文件的部分,並從請求(而不是從文件)讀取數據。好消息是你不必自己發明所有的代碼;你可以使用Apache Commons Fileupload,它會處理所有困難的部分。

+1

100%正確,+1 – MaVRoSCy

+0

感謝您的回答。 – Siva

相關問題