分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

文件上传

发布时间:2023-09-06 02:35责任编辑:胡小海关键词:文件上传
一、文件上传
???1.对表单的要求
???????(1)提交方式必须是post;
???????(2)上传时,enctype = "multipart/form-data";
 ???????(3)必须要有<input type="file">
???2.对servlet的要求
???????request.getInputStream();
???3.fileupload组件
???????comments-fileupload.jar
???????comments-io.jar
???????三个核心类
 boolean ismultipartContent = ServletFileUpload.isMultipartContent(request); ???????if (!ismultipartContent){ ???????????throw new RuntimeException("你的表单不是enctype=multipart/form-data"); ???????} ???????//1.创建DiskFileFactory工厂类 ???????DiskFileItemFactory dfif = new DiskFileItemFactory(); ???????//2.创建servletFileUpload核心对象 ???????ServletFileUpload sfu = new ServletFileUpload(dfif); ???????//3.解析request对象,并得到一个表单项的集合 ???????try { ???????????List<FileItem> fileItems = sfu.parseRequest(request); ???????????for(FileItem fileItem:fileItems){ ???????????????if(fileItem.isFormField()){ ???????????????????//是普通表单 ???????????????????processFormFiled(fileItem); ???????????????}else{ ???????????????????//上传表单项 ???????????????????processUploadFiled(fileItem); ???????????????} ???????????} ???????} catch (FileUploadException e) { ???????????e.printStackTrace(); ???????} ???}

???4.FileItem提供的方法
???????getFeildName(); //得到字段名 ???
???????getString();//得到字段的值
???????getName();//得到文件名
???????getInputStream();
???????isFormFeild();//判断是否是普通表单项
???????getContentType();//获取上传文件的MIME类型
???????getSize();//获取上传文件的大小
//普通表單項 ???private void processFormFiled(FileItem fileItem) { ???????String fieldName = fileItem.getFieldName(); ???????String filedValue = fileItem.getString(); ???????System.out.println(fieldName + " = " + filedValue); ???}
private void processUpload(FileItem fileItem){ ???????//得到上传的名字 ???????String fileName = fileItem.getName(); ???????//得到文件流 ???????try { ???????????InputStream is = fileItem.getInputStream(); ???????????//创建存盘的路径 ???????????String realPath = this.getServletContext().getRealPath("/day18/upload"); ???????????File storeDirectory = new File(realPath ); ???????????if(!storeDirectory.exists()){ ???????????????storeDirectory.mkdirs(); ???????????} ???????????//处理文件名 ???????????//fileName = fileName.substring(fileName.lastIndexOf(File.separator)+1); ???????????if(fileName!=null){ ???????????????fileName = FilenameUtils.getName(fileName); ???????????}

文件上传

原文地址:https://www.cnblogs.com/q-1993/p/10526333.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved