博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件大小限制
阅读量:5371 次
发布时间:2019-06-15

本文共 2914 字,大约阅读时间需要 9 分钟。

上传的文件不能太大,因此要对文件大小做一定的限制。

限制单个文件的大小:

1 sfu.setFileSizeMax(1024 * 10);//10K

限制所有文件的总大小:

1 sfu.setSizeMax(1024 * 30);

具体示例代码:

public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        //设置字符编码        //能控制文件名字的中文编码,但是不能控制普通字段的中文乱码        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        //设置返回的内容类型        response.setContentType("text/html;charset=UTF-8");        //创建接收文件的工厂类        DiskFileItemFactory factory = new DiskFileItemFactory();        //创建文件解析对象        ServletFileUpload sfu = new ServletFileUpload(factory);        //设置解析request请求的编码方式//        sfu.setHeaderEncoding("UTF-8");        //设置上传单个文件的大小,以byte为单位        sfu.setFileSizeMax(1024 * 10);//10K        //设置所有文件的总大小        sfu.setSizeMax(1024 * 30);        try {            //解析request获得表单中的每一文件项(包含普通文本域)            List
fiList = sfu.parseRequest(request); //遍历每一个文本项 for(FileItem fi : fiList){ //获得原始文件名 String originalFilename = fi.getName(); //获得字段名 String field = fi.getFieldName(); //是否是普通字段 //如果true,代表普通字段(a simple form field) //如果false,代表文件字段 boolean isFormField = fi.isFormField(); //判断是否是文件字段 if(!isFormField){ if(field != null && !"".equals(field) ){ //生成文件名UUID,使文件名不会重复 String uuid = UUID.randomUUID().toString(); //获得原始文件的后缀名 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); //设置要上传的目录,如果是隐私的文件可以放在WEB-INF下来提高安全性 String uploadPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload"); //创建文件对象 File file = new File(uploadPath,uuid+suffix);//参数:文件目录,文件名 //把文件写入硬盘 fi.write(file); } } else { System.out.println(fi.getString()); //手动转换编码 String content = fi.getString(); content = new String(content.getBytes("ISO8859-1"),"UTF-8"); System.out.println(content); } } //回写结果 response.getWriter().print("文件上传成功。"); } catch (Exception e) { //捕获单个文件过大的异常 if(e instanceof FileSizeLimitExceededException){ response.getWriter().write("上传失败,单个文件过大。"); } //捕获文件总大小的异常 if(e instanceof SizeLimitExceededException){ response.getWriter().write("文件总大小不能超过30KB"); } e.printStackTrace(); } }

 

转载于:https://www.cnblogs.com/ShawnYang/p/7647188.html

你可能感兴趣的文章
mysql中间件研究(Atlas,cobar,TDDL)[转载]
查看>>
ASP.NET应用程序与页面生命周期
查看>>
Linux--多网卡的7种Bond模式
查看>>
Oracle命令(一):Oracle登录命令
查看>>
业务建模 之 业务用例图
查看>>
EasyUI基础入门之Pagination(分页)
查看>>
一次PHP代码上线遇到的问题
查看>>
显示密码
查看>>
实现one hot encode独热编码的两种方法
查看>>
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>