我正在使用
<input type="file" name="file" value="">
浏览图像文件以进行上传。但是当我使用
时 String imageUrl = request.getParameter("file");
out.println("logofile" + imageUrl);
在操作页面上,它仅显示图像名称而不是完整的绝对路径。当我尝试使用
时File file = new File(imageUrl);
它抛出以下异常
java.io.FileNotFoundException: apple-logo.jpg (The system cannot find the file specified)
我做错了什么?
答案 0 :(得分:2)
问题是您正在尝试通过webbrowser发送的名称从Web服务器的本地磁盘文件系统获取文件内容。这是完全错误的。只有Internet Explorer会显示它发送完整路径而不是仅发送名称的错误。然而,完整路径对您来说无用,因为Web服务器通常无法访问客户端的本地磁盘文件系统。
您应该从Webbrowser发送的请求正文中获取真实文件内容。为此,您需要确保HTML表单具有method="post"
和enctype="multipart/form-data"
属性。
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
然后,在正在侦听doPost()
的网址格式的servlet的/upload
方法中,使用HttpServletRequest#getParts()
或当您仍处于Servlet 2.5或更早版本时,请使用{{ 3}}处理multipart / form-data请求的各个部分。它将包含通常的请求参数中的上传文件。
答案 1 :(得分:0)
您可以通过用户检查here用户Apache Commons File Upload。