引用:http://bbs.csdn.net/topics/390290685?page=1

Java code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        final long MAX_SIZE = 300 1024 1024;// 设置上传文件最大值
        //允许上传文件格式的列表
        final String[] allowedExt = new String[]{"jpg""jpeg""gif""txt""doc""mp3""wma""m4a""rar""zip"};
        response.setContentType("text/html");
        // 设置字符编码为UTF-8, 统一编码,处理出现乱码问题
        response.setCharacterEncoding("UTF-8");
        // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
        DiskFileItemFactory dfif = new DiskFileItemFactory();
        dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
        dfif.setRepository(new File(request.getRealPath("/")+"ImagesUploadTemp"));
        // 用以上工厂实例化上传组件
        ServletFileUpload sfu = new ServletFileUpload(dfif);
        //设置最大上传大小
        sfu.setSizeMax(MAX_SIZE);
        PrintWriter out = response.getWriter();
        //从request得到所有上传域的列表
        List fileList = null;
        try{
            fileList = sfu.parseRequest(request);
        }catch(FileUploadException e){
            // 处理文件尺寸过大异常
            if(e instanceof SizeLimitExceededException){
                out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p/>");
                out.println("<a href=\"#\" >返回</a>");
                return;
            }
            e.printStackTrace();
        }
        //没有文件上传
        if(fileList == null || fileList.size() == 0){
            out.println("请选择上传文件<p/>");
            out.println("<a href=\"#\" >返回</a>");
            return;
        }
        //得到所有上传的文件
        Iterator fileItr = fileList.iterator();
        //循环处理所有文件
        while(fileItr.hasNext()){
            FileItem fileItem  = null;
            String path = null;
            long size = 0;
            //得到当前文件
            fileItem = (FileItem) fileItr.next();
            // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
            if (fileItem == null || fileItem.isFormField())
            {
                continue;
            }
            // 得到文件的完整路径
            path = fileItem.getName();
            // 得到文件的大小
            size = fileItem.getSize();
            if ("".equals(path) || size == 0)
            {
                out.println("请选择上传文件<p />");
                out.println("<a href=\"#\" >返回</a>");
                return;
            }
         // 得到去除路径的文件名
            String t_name = path.substring(path.lastIndexOf("//") + 1);
            // 得到文件的扩展名(无扩展名时将得到全名)
            String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
            // 拒绝接受规定文件格式之外的文件类型
            int allowFlag = 0;
            int allowedExtCount = allowedExt.length;
            for (; allowFlag < allowedExtCount; allowFlag++)
            {
                if (allowedExt[allowFlag].equals(t_ext))
                    break;
            }
            if (allowFlag == allowedExtCount)
            {
                out.println("请上传以下类型的文件<p />");
                for (allowFlag = 0; allowFlag < allowedExtCount; allowFlag++)
                    out.println("*." + allowedExt[allowFlag] + "   ");
                out.println("<p /><a href=\"#\" >返回</a>");
                return;
            }
            //long now = System.currentTimeMillis();
            // 根据系统时间生成上传后保存的文件名
            //String prefix = String.valueOf(now);
            // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下
            // String u_name = request.getRealPath("/") + "ImagesUploaded/"
            // + prefix + "." + t_ext;
            String filename = t_name;
            System.out.println(t_name);
            try
            {
                // 保存文件到C://upload目录下
                fileItem.write(new File("C://upload//" + filename));
                //System.out.println(filename);
                out.println("文件上传成功. 已保存为: " + filename + "   文件大小: " + size + "字节<p />");
                out.println("<a href=\"#\" >继续上传</a>");
            catch (Exception e)
            {
                e.printStackTrace();
            }
 
        }
    }

servletFileUpload的更多相关文章

  1. SpringMVC中servletFileUpload.parseRequest(request)解析为空获取不到数据问题

    原因分析 首先我们来看下Spring mvc 中文件上传的配置 <bean id="multipartResolver" class="org.springfram ...

  2. Spring中servletFileUpload完成上传文件以及文本的处理

    JSP: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  3. ServletFileUpload(Servlet文件上传)

    //**文件上传** form表单提交必须指定Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型"multipart/form-data" //1.创建磁盘文件项目工 ...

  4. 利用ServletFileUpload组件上传文件

    自己的运用: public void UploadNoteFile(HttpServletRequest request,HttpServletResponse response){  String ...

  5. Servlet文件上传(ServletFIleUpload,DiskFileItemFactory,FileItem)

    1:我们学的是表单文件上传,就是在一个FORM中提交相应的信息,和之前我们的提交的注册信息之类的表单是不同的,所以要先改变一下FORM的属性,enctype="multipart/form- ...

  6. 使用ServletFileUpload实现上传

    1.首先我们应该为上传的文件建一个存放的位置,一般位置分为暂时和真是目录,那我们就须要获取这俩个目录的绝对路径,在servlet中我们能够这样做 ServletContext application ...

  7. 与文件上传到的三个类:FileItem类、ServletFileUpload 类、DiskFileItemFactory类

    文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...

  8. ServletFileUpload 图片上传

    <script type="text/javascript"> $(function () { $('#uploadSubmit').click(function () ...

  9. Spring Boot 使用 ServletFileUpload上传文件失败,upload.parseRequest(request)为空

    使用Apache Commons FileUpload组件上传文件时总是返回null,调试发现ServletFileUpload对象为空,在Spring Boot中有默认的文件上传组件,在使用Serv ...

随机推荐

  1. GO语言练习:网络编程 ICMP 示例

    1.代码 2.编译及运行 1.Go语言网络编程:ICMP示例代码 icmptest.go package main import ( "fmt" "net" & ...

  2. 使用Privoxy做智能代理切换

    使用Privoxy做智能代理切换 You take the blue pill, the story ends, you wake up in your bed, and believe whatev ...

  3. 将普通工程转为mvn标准工程(main resources)

    It is sometimes required to change the default source folder working on the java project. One best e ...

  4. java web(一) 使用sql标签库+tomcat+mysql手动创建一个jsp练习总结

    2016-09-0111:06:53                                     使用sql标签库+tomcat+mysql手动创建一个jsp 1. 1.1安装tomcat ...

  5. 禁止浏览器直接访问php文件

    框架中很多php文件并不是用来如果熟悉框架的路径就能直接访问这个文件,虽然访问到了也不能看到什么(他看到的是编译过后的html文件),但还是觉的很不安全. 可以通过下面这种方法拒绝他人的从浏览器中的访 ...

  6. Oracle TDE的数据加密示例并用logminer验证加密效果

    1.确认数据库版本 2创建密钥钱包 3创建加密列的表并初始值 4演示TDE的数据加密示例 5 logminer验证加密效果

  7. Web前端开发基础 第二天(各类标签)

    认识标签(第二部分): <ul> <li>信息</li> <li>信息</li> ...... </ul> <ol> ...

  8. sqlserver集合操作

    SQLServer2005通过intersect,union,except和三个关键字对应交.并.差三种集合运算 详细如下 use tempdb go if (object_id ('t1' ) is ...

  9. top命令结果参数注解

    top - 08:47:07 up 16 days, 18:00, 1 user, load average: 0.00, 0.01, 0.05top - 08:59:31 up 16 days, 1 ...

  10. LoadRunner11.00安装问题及解决方法

    1.安装提示:“安装程序已确定正在等待重新启动....” 解决方法:打开安装包,找到:\Additional Components\IDE Add-Ins\MS Visual Studio .NET\ ...