JAVA中文件上传的实例
来源:互联网 发布:马克斯cms x站 编辑:程序博客网 时间:2024/06/10 04:17
- 导包
向项目中的WEB-INF下的lib目录中导入下面两个包:commons-fileupload.jar包和commons-io.jar包 - 编写上传servlet代码。
public class UploadServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取部署在tomcat下的路径目录。 File file = new File (this.getServletContext().getRealPath("/tempfile")); //如果该目录不存在,我们应该自己创建该目录。 if(!file.exists()) file.mkdirs(); //创建文件项工厂对象,设置缓冲区大小和临时文件位置。 DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024,file); //创建指定缓冲区和临时文件位置的ServletFileUpload对象 ServletFileUpload upload = new ServletFileUpload(factory); //判断请求是否为文件上传模式。 if(ServletFileUpload.isMultipartContent(request)){ //使用自己指定的编码编码信息。Tomcat默认的编码是为"ISO-8859-1",防止出现上传文件名称乱码的问题。 upload.setHeaderEncoding("UTF-8"); //这里可以设文件上传大小上限。也可以不设置。参数单位为Byte //upload.setSizeMax(1024*1024*5); //解析request,得到所有上传项目的数据。该方法有异常,可以选择进行处理或者声明异常。 List<FileItem> items = upload.parseRequest(request); //遍历List集合,对上传项目进行判断,根据情况进行处理。 for(FileItem item:items){ //判断是否是上传项目是否在表单直接提交数据的范围 if(item.isFormField()){ //表单直接携带的数据,既:非文件上传的组件。 String fieldname = item.getFieldName();//获取组件名称 String content = item.getString("UTF-8");//获取组件的内容,传入UTF-8,是为了保证和上面设置的编码一样,防止出现乱码问题。 //根据自己的实际情况需求做操作。 }else{ //组件为文件上传,为了防止代码太乱,将一些功能封装到自定义工具类中,工具类等下介绍。 //获取上传文件的名字 String name = item.getName(); String filename = FileUploadUtils.getRealName(name); //给文件起个随机名字。 String uuidname = FileUploadUtils.getUUIDFileName(filename); //获取散列目录 String hashDirectory=FileUploadUtils.getHashDirectory(filename); //存放散列目录的父目录,在该案例中,设父目录名称为upload String parentPath =this.getServletContext().getRealPath("/upload"); File hd = new File(parentPath,hashDirectory); //判断目录是否存在,不存在则创建。 if(!hd.exists) hd.mkdirs(); //调用commons-io包中的工具 IOUtils.copy(item.getInputStream(),new FileOutputStream(new File(hd,uuidname))); //删除临时文件。 item.delete(); } } }else{ //执行非文件上传请求操作 response.getWrite().write("这不是上传请求"); return; }}
- 自定义上传工具类。
public class FileUploadUtils { //获取文件的名称。 public static String getRealName(String filename){ int index = filename.lastIndexOf("\\")+1; return filename.substring(index); } //获取随机名称 public static String getUUIDFileName(String filename){ int index = filename.indexOf("."); if(index!=-1) return UUID.randomUUID()+filename.substring(index); else return UUID.randomUUID().toString(); } //通过散列目录算法,得到散列目录。 public static String getHashDirectory(String filename){ int hashcode = filename.hashCode(); int a = hashcode & 0xf; hashcode = hashcode>>>4; int b = hashcode & 0xf; return "/"+a+"/"+b; }}
0 0
- JAVA中文件上传的实例
- Java中文件上传
- Java中文件的上传与下载
- Java中文件的上传与下载
- java中文件的上传和下载
- java中文件的下载实例
- struts中文件的上传
- javaWeb中文件的上传
- SWING中文件的上传
- Struts中文件的上传
- java web中文件的上传于下载
- 【JAVA】Web中文件的上传与下载
- java中文件上传包fileupload
- java中文件上传和下载
- java中文件的上传和下载:文件上传和下载原理
- EasyJWeb中文件上传的处理
- 关于.net中文件上传的程序
- 关于Struts中文件的上传
- Ubuntu14.04+MATLAB2015b
- Problem G: 求图形的面积和体积
- webpack-使用babel-loader转化ES6代码
- NDK探究之旅《三》—C语言的输入输出函数
- (react 学习第一篇)react本地环境安装
- JAVA中文件上传的实例
- Python遍历文件夹和读写文件的方法
- Android下两个double类型相加的问题
- dij优化改解次短路 poj 3255
- VS 番茄助手提示
- 软件需求规格说明(SRS)模板
- Discuz!论坛教程之设置帖子内容编辑后自动提升主题
- 如何画中学数学书上的函数图像?
- 地理位置