0

我正在尝试将图像上传到服务器...使用 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”并且图像无法读取。

4

1 回答 1

2

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

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

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

于 2013-07-19T06:02:11.753 回答