我正在尝试使用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 :(得分:2)
在Internet Expolorer中,它偶然或多或少地运行,因为您可能在与访问它的同一台计算机上运行该应用程序。 Internet Explorer在您上传文件时会发送真实文件名,例如C:\Users\Administrator\Desktop\Image.jpg
。您的Web应用程序在同一台计算机上运行,因此它可以从磁盘读取该文件。
但是,Chrome和Firefox不希望将客户端的完整路径名公开给应用程序,而是使用fakepath\Image.jpg
。您的磁盘上没有这样的文件,这就是网络应用程序无法读取图像的原因。
您应该做的是从请求中提取不同的部分,找到包含上传文件的部分,并从请求(而不是从文件)中读取数据。好消息是你不必自己发明所有这些代码;您可以使用Apache Commons Fileupload,它将为您处理所有困难的部分。