java从入门到入土(3)文件上传

来源:互联网 发布:mac怎么压缩rar 编辑:程序博客网 时间:2024/06/05 13:29

个人学习笔记


1.jsp页面添加表单 文件域和提交

*表单必需添加enctype="multipart/form-data"属性,且以post方式提交

2.添加外部工具jar包  commons-fileupload.jar  commons-io.jar


3.编辑servlet:

response.setContentType("text/html;charset=utf-8;");request.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter(); //1.创建FileItemFactory对象    FileItemFactory fif=new DiskFileItemFactory();    //2.创建servletFileUpload对象(上传对象)    ServletFileUpload sfu=new ServletFileUpload(fif);    //设置上传的文件大小限制    //sfu.setSizeMax(160*1024);    try{    //3.解析请求    传文件时的表单可能还有其他内容    List<FileItem> list=sfu.parseRequest(request);     out.print("长度:"+list.size()+"<br/>");    //1.获取非文件域表单对象内容    //String pname=list.get(……).getString("utf-8");    //out.print(pname);    //2.获取文件域的相关信息及上传     FileItem fi=list.get(0);     //上传     //创建目标文件对象     //将相对路径转化为绝绝路径          String path=request.getRealPath("upload");     //生成唯一文件名     //获取文件的扩展名     String upfileName=fi.getName();     String extName=upfileName.substring(upfileName.lastIndexOf("."));        //实现文件类型的判断     List<String> types=Arrays.asList(".jpg",".jpeg",".gif");     if(!types.contains(extName)){      request.setAttribute("info", "只能上传jpg,gif的图片");}     else     {          //目标文件保存的位置     String fileName=System.currentTimeMillis()+extName;     String savePath=path+File.separator+fileName;     //上传     File file=new File(savePath);     fi.write(file);         request.setAttribute("info", "上传成功");      }    }catch(FileUploadBase.SizeLimitExceededException ex){     request.setAttribute("info", "超出大小限制");        } catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}

以上  由于原本的文件上传无法和其他表单同时使用 在引入外部jar包以后就可以了  同时也可以限定上传文件的大小和文件类型限制

使用其他的jar包还可以实现在文件上传之前就限定文件类型 而不是上传了以后再检测文件类型

为防止文件名冲突可以在文件名中加入时间

原创粉丝点击