您的位置:首页 > 其它

Servlet文件上传

2015-07-18 16:55 232 查看
Servlet文件上传,简单点儿说,就是客户端的浏览器将要上传的文件发送到服务器端,服务器根据类型解析发过来的数据,进行不同的处理。

实现一个简单的文件上传:

首先JSP页面:

<body>
<form action="u" method="post" enctype="MULTIPART/FORM-DATA">
<input type="text" name="username"></br>
<input type="file" name="file"></br>
<input type="file" name="file"></br>
<input type="submit" value="OK">
</form>
</body>
其中注意form表单的method只能是post,enctype值固定为"MULTIPART/FORM-DATA",四个input分别为一个文本框,两个文件,一个提交按钮。
然后,web.xml为一个简单的Servlet配置: <servlet>
<servlet-name>up</servlet-name>
<servlet-class>servlet.upload.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>up</servlet-name>
<url-pattern>/u</url-pattern>
</servlet-mapping>
UploadServlet类,处理文件上传:
public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//设置编码,放置乱码
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//本地磁盘的存储路径
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = req.getRealPath("/files");
factory.setRepository(new File(path));
//处理文件上传的主要类
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//获得request中的数据
List<FileItem> items = upload.parseRequest(req);
Iterator<FileItem> iterator = items.iterator();
while (iterator.hasNext()) {
FileItem item = iterator.next();
//判断类型
if (item.isFormField()) {
//此处得到文本框的值,我们不作处理
String fieldName = item.getFieldName();
String value = item.getString();
System.out.println("fieldname :" + fieldName);
System.out.println("value :" + value);
} else {
//得到的是文件类型
//上传文件的文件名
String name = item.getName();
System.out.println("filename :" + name);
item.write(new File(path, name));
}
}
} catch (Exception e) {
}
}
}
其中,DiskFileItemFactory主要是存储在本地的路径信息,就是上传上来的文件要放在哪个地方。
ServletFileUpload用来解析request中的信息,将浏览器发送过来的信息封装成一个个的item,然后根据item的类别进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet 文件上传