注意:
在阅读此问题及其答案之前,请检查您的输入元素具有name
属性。
我正在尝试使用servlet上传文件。Eclipse控制台未显示任何错误。但是文件没有被上传。对我来说,似乎一切都很好。但是我在某个地方犯了错误。
在控制台我得到
Inside Servlet //Printed by code
Items: [] // Printed by Cdoe
HTML代码:
<form action="ImageUploadServlet" method="post" enctype="multipart/form-data">
<table>
<tr>
<td><label>Select Image: </label></td>
<td><input type="file" id="sourceImage" /></td>
<tr>
<td colspan="3">
<input type="submit" value="Upload"/><span id="result"></span>
</td>
</tr>
</table>
</form>
Servlet代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean isMultiPart = ServletFileUpload.isMultipartContent(request);
System.out.println("Inside Servlet");
if(!isMultiPart){
System.out.println("Form type is not multipart/form-data");
System.out.println("File Not Uploaded");
}
else
{
FileItemFactory dfit = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(dfit);
List aList = null;
try {
aList = sfu.parseRequest(request);
System.out.println("Items: "+aList);
}
catch (FileUploadException fue)
{
fue.printStackTrace();
}
Iterator itr = aList.iterator();
while(itr.hasNext())
{
FileItem fi = (FileItem) itr.next();
if(fi.isFormField())
{
System.out.println("File Name: "+fi.getFieldName());
System.out.println("File Size: "+fi.getSize());
try
{
File f = new File("D:/MyUploads/", fi.getName());
fi.write(f);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
System.out.println("It's Not Form Item;");
}
}
}
}
}
任何建议,将不胜感激。
谢谢!
有两个问题:
首先,您需要给该字段一个name
。然后它将成为请求参数名称。
<input type="file" id="sourceImage" name="sourceImage" />
其次,在根据commons fileupload
guide
的else
情况下,您需要处理文件上传。您的代码当前忽略它们,仅执行sysout。FileItem#isFormField()
if (item.isFormField()) {
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
// ... (do your regular form field processing job here)
} else {
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = FilenameUtils.getName(item.getName());
// ... (do your uploaded file job here)
File file = new File("D:/MyUploads/", filename);
item.write(file);
}
请注意,您需要使用FilenameUtils#getName()
来提取文件名,因为MSIE浏览器会错误地沿着文件名发送完整的客户端文件路径。另请参阅CommonsFileUpload FAQ。
您还需要记住,这种方法将覆盖任何以前使用相同名称上传的文件。您可能需要在文件名中添加自动生成的后缀。
Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。 本文使用到的文件有: upload.jsp : 文件上传表单。 message.jsp : 上传成功后跳转页面。 UploadServlet.java : 上传处理 Servlet。 需要引入的 jar 文件:commons-fileupload-1.3.2、com
问题内容: 我的问题有点说明了一切。我目前正在成功地将Uploadify(Flash + Ajax)用于Servlet(带有OWASP ESAPI覆盖的公共上传),但是我想知道如何构建HTML5支持,或者说具有Flash支持的HTML5。 我知道如何使HTML5 DnD正常工作,但是我不太了解Java Servlet连接和/或后端的机制。我搜索了很多地方,但找不到任何答案,因此,我们将不胜感激。
本文向大家介绍Jsp+Servlet实现文件上传下载 文件上传(一),包括了Jsp+Servlet实现文件上传下载 文件上传(一)的使用技巧和注意事项,需要的朋友参考一下 文件上传和下载功能是Java Web必备技能,很实用。 本文使用的是Apache下的著名的文件上传组件 org.apache.commons.fileupload 实现 下面结合最近看到的一些资料以及自己的尝试,先写第一篇文件上
问题内容: 如何使用jsp或者Servlet上传文件到服务器? 问题答案: 介绍 要浏览并选择要上传的文件,你需要·在表单中有一个HTML 字段。如HTML规范中所述,你必须使用方法,并且表单的属性必须设置为。 提交此类表单后,二进制多部分表单数据在请求正文中的使用方式与enctype未设置时的格式不同。 在Servlet 3.0之前,Servlet API本身不支持。它仅支持默认格式。使用多部分
本文向大家介绍Servlet实现简单文件上传功能,包括了Servlet实现简单文件上传功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Servlet文件上传的具体代码,供大家参考,具体内容如下 两点要素: 1.表单提交方式必须是post 2.enctype一定要是multipart/form-data。 enctype的默认值是application/x-www-form-url
本文向大家介绍servlet上传文件实现代码详解(四),包括了servlet上传文件实现代码详解(四)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了servlet上传文件的具体代码,供大家参考,具体内容如下 1.servlet上传文件 servlet上传文件就是将客户端的文件上传到服务器端。 向服务器发送数据时,客户端发送的http请求正文采用“multipart/form