在JSP中无法上传图像文件的完整路径

时间:2013-07-19 05:55:20

标签: java javascript html image 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”并且图片无法读取。

1 个答案:

答案 0 :(得分:2)

在Internet Expolorer中,它偶然或多或少地运行,因为您可能在与访问它的同一台计算机上运行该应用程序。 Internet Explorer在您上传文件时会发送真实文件名,例如C:\Users\Administrator\Desktop\Image.jpg。您的Web应用程序在同一台计算机上运行,​​因此它可以从磁盘读取该文件。

但是,Chrome和Firefox不希望将客户端的完整路径名公开给应用程序,而是使用fakepath\Image.jpg。您的磁盘上没有这样的文件,这就是网络应用程序无法读取图像的原因。

您应该做的是从请求中提取不同的部分,找到包含上传文件的部分,并从请求(而不是从文件)中读取数据。好消息是你不必自己发明所有这些代码;您可以使用Apache Commons Fileupload,它将为您处理所有困难的部分。