脑洞山猫 2016-08-10 06:37 采纳率: 20%
浏览 1065
已采纳

Java,文件上传。困惑

使用了百度的WebUploader上传组件,我要怎么写后台代码来实现保存在本地?
我看了4个demo,都使用了Commons-fileupload 来实现。
可是单独使用commons-fileupload不使用webupload这类上传组件也可以吧?
那么使用WebUploader的意义是什么呢?

  • 写回答

1条回答 默认 最新

  • yu954663801 2016-08-10 07:05
    关注

    // 创建文件上传核心类
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload sfu = new ServletFileUpload(factory);
    // 设置编码
    sfu.setHeaderEncoding("UTF-8");
    // 设置上传的单个文件的最大字节数为2M
    sfu.setFileSizeMax(1024 * 1024 * 2);
    // 设置整个表单的最大字节数为10M
    sfu.setSizeMax(1024 * 1024 * 10);

        try {
            // 处理表单请求
            List itemList = sfu.parseRequest(request);
            Iterator it = itemList.iterator();
            while (it.hasNext()) {
                FileItem fileItem = (FileItem) it.next();
                // 对应表单中的控件的name
                String fieldName = fileItem.getFieldName();
                System.out.println("控件名称:" + fieldName);
                // 如果是普通表单控件
                if (fileItem.isFormField()) {
                    String value = fileItem.getString();
                    //处理逻辑
                } else { // 上传文件
                    // 获得文件大小
                    long size = fileItem.getSize();
                    // 获得文件名
                    String fileName = fileItem.getName();
                    System.out.println("文件名:" + fileName + "\t大小:" + size + "byte");
    
                    // 设置不允许上传的文件格式
                    if (fileName.endsWith(".exe")) {
                        request.setAttribute("msg", "不允许上传的类型!");
                    } else {
                        // 将文件保存到指定的路径
                        File file = new File(savePath, fileName);
                        fileItem.write(file);
                        request.setAttribute("msg", "上传成功!");
                    }
                }
            }
        } catch (FileSizeLimitExceededException e) {
            request.setAttribute("msg", "文件太大");
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考