第一次写,为了以后可以更方便的查找,如有读者访问,请见谅
使用的jar包有以下两个:
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
servlet上传文件分*步
1.写jsp文件
2.写web文件
3.写Servlet类
1、首先jsp文件(直接复制代码):enctype=“multipart/form-data” 上传图片是必须要加上 form的提交方式为post
<form action="upload" method="post" **enctype="multipart/form-data"**>
<input type="text" name="name">
<input type="file" name="upload">
<input type="submit" value="上传">
</form>
2、web.xml文件 (最基本的跳转页面就可以了)
<display-name>upload</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>upload.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
</web-app>
3、Servlet 关键的doPost方法, 继承HttpServlet类即可
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("UTF-8");
//设置服务器保存路径
String path = request.getSession().getServletContext().getRealPath("upload");
//实例化解析工厂
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
//实例化ServletFileUpload
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
try {
//解析request请求
List list = servletFileUpload.parseRequest(request);
//将list转成迭代为FileItem类型
Iterator<FileItem> items = list.iterator();
//处理得到的每一个items
while(items.hasNext()){
FileItem item = items.next();
//判断是否是不同字段
if(item.isFormField()){
System.out.println("当前的普通字段是:"+item.getFieldName());
//解决文字的乱码问题
System.out.println("当前的普通字段是的值:"+new String(item.getString().getBytes("ISO8859_1"),"utf-8"));
}
//当前解析的是文件字段
else{
String fileName = item.getName();
if(fileName!=null && !fileName.equals("")){
//保存路径,文件名
File file = new File(path, fileName);
//保证目录是正确的,如果当前目录不存在,就自动创建文件路径
file.getParentFile().mkdirs();
//保存文件
item.write(file);
System.out.println("上传成功");
}
else{
System.out.println("上传失败");
}
}
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("上传失败");
}
}
备注:1、跳转页面的传参是根据name的属性来传递的
2、一定要添加两个jar包
commons-fileupload-1.2.2.jar 上传文件所需要的类包
commons-io-2.0.1.jar 具体没研究过,虽然没有这个包显示时不会报错,但在上传时候不能对request解析
以上代码均已测试,为测试demo,有很多不足之处请指点!!!
新手原创,如有异同纯属偶然