FilenameUtils 里面得工具可以帮我们完善这个文件上传的功能修复BUG
④使用jar包 打开jar包找到index.html 小提示:在首页总有一个开发指南(User Guide)或者快速上手(Quick Start )等着你 ⑤根据快速入门解析完成一个文件上传的功能 代码: @WebServlet("/upload")public class UploadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建一个工厂解析这个请求,得到的是一个集合,这个集合装的就是一个请求对象,封装的就是每一条请求数据
try {
// 创建一个工厂
FileItemFactory factory = new DiskFileItemFactory();
// 创建一个文件上传的处理器
ServletFileUpload upload = new ServletFileUpload(factory);
//解析这个请求:解析完之后咱们可以拿到一个FileItem的集合
List < FileItem > items = upload.parseRequest(req);
//通过遍历集合可以拿到上传的文件的属性值,包括属性名,值..
for (FileItem fileItem : items) {
//上面的测试可以看输出,普通控件和file控件的处理方式是要区别对待的
if(fileItem.isFormField()){
//代表是一般表单,用一般表单的处理方式解决即可
}else{
//拿到上传文件的名称(有ie版本问题)
//String upname=fileItem.getName();
//有重名文件上传的问题
String upname = FilenameUtils.getName(fileItem.getName());
//有保存路路径的问题有的操作系统没有盘符
File uploadFile = new File("D:/",upname);
//将本地的文件写到服务器中
fileItem.write(uploadFile);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} 说明:这个只能实现本地上传,还有许多bug需要修复,在后面会有详细的解决方案