wintersweetzeng 2015-05-06 12:50 采纳率: 0%
浏览 2723
已结题

dwz页面显示和文件提交

1、form表单提交中加上class="pageForm required-validate" 就会出现页面一直加载中

2、struts2文件上传时 from表单中加上 onsubmit="return navTabSearch(this);" 时 上传文件的路径就不能传递到action中的File 对象中! 不加上这个onsubmit 就可以提交到action中 但是那样跳转回来时框架旁边的就没了,只是另外一个单独的页面 一直在线求助 谢谢那位大神

上传文件:
  • 提交
  • 取消
  • 写回答

3条回答 默认 最新

  • 毕小宝 博客专家认证 2015-05-07 02:33
    关注

    问题1,你的class里面是不是有什么校验操作呢?
    问题2,form的提交,如果你设置了onsubmit那么提交就走入到navTabSearch,而不是form的action请求了。那么你后台的Action就不可能直接收到这个文件表单。
    首先确认一下,你是不是需要在form提交之前进行表单数据校验,并且提交操作不是走form的自动跳转,而是在navTabSearch中ajax请求完成上传呢?如果是这样的话,可以在Action中使用ServletFileUpload解析上传的文件。
    示例代码:

     public void execute(HttpServletRequest request, HttpServletResponse response){
            ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
            //引入MaterialsService
            MaterialsService materialsService = context.getBean(MaterialsService.class);
    
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // 设置内存缓冲区,超过后写入临时文件
            factory.setSizeThreshold(10240000);
            // 设置文件上传路径,文件统一存储在视频文件夹下的Materials文件夹下
            String basepath = SystemConfig.getVodFolder() + "/Materials/";
            File file = new File(basepath);
            if (!file.exists())
                file.mkdirs();
            factory.setRepository(file);
            ServletFileUpload upload = new ServletFileUpload(factory);
            // 设置单个文件的最大上传值
            upload.setFileSizeMax(10002400000l);
            // 设置整个request的最大值
            upload.setSizeMax(10002400000l);
            upload.setHeaderEncoding("UTF-8");
    
                try {
                    List<?> items = upload.parseRequest(request);
                    FileItem item = null;
                    String filePath = null;
                    String fileName = null;
                    long fileSize = 0;
                    String flg = null;
                    for (int i = 0; i < items.size(); i++) {
                        item = (FileItem) items.get(i);
    
                        // 保存文件
                        if (!item.isFormField() && item.getName().length() > 0) {
                            fileName = item.getName();//真实文件名
                            fileSize = item.getSize();
                            flg = fileName.substring(fileName.lastIndexOf(".") + 1);//截取扩展名
                            //为防止文件重名,则将存储名称使用UUIDGenerator重置
                            String flgName = UUIDGenerator.geterateId() + "." + flg;
                            // fileName.substring(0, fileName.lastIndexOf(".")) + "_" + String.valueOf(System.currentTimeMillis()) + "." + flg;
                            filePath = basepath + flgName;
                            File uploadedFile = new File(filePath);
                            //写文件
                            item.write(uploadedFile);
                            //那么这个File uploadedFile就是客户端上传的文件了
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    

    方法的参数的获取,可以网上搜一下struts2如何获取HttpServletRequest 和HttpServletResponse。依照你的需求,就是不能利用struts2完成请求表单数据的映射,只能自己解析HttpServletRequest中的表单数据了。

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分