当前位置: 首页 > 知识库问答 >
问题:

使用Struts 2和Uploadify无法上传文件

萧成文
2023-03-14

我的JSP页面是这样的:

$(function() {  
    $("#file_upload").uploadify({  
        'height': 27,
        'width': 80,
        'buttonText':'浏览',
        'swf':'<%=basePath%>admin/tupian/js/uploadify.swf',
        'uploader': '<%=basePath%>Imguploadoper.img',
        'auto' : false,
        'fileTypeExts' : '*.jpg'
        });
});

以下是我的java代码:

ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
try {
    //this line returns null
    List items = upload.parseRequest(request);
    Iterator itr = items.iterator();
    while (itr.hasNext()) {
        ......
    }
} catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
out.flush();
out.close();

upload.parse请求(请求)返回null。我真的不知道原因。

共有1个答案

伍嘉
2023-03-14

这是在Struts2中上载时的常见错误。您不应该在操作中解析请求。我相信您已经在action中编写了java代码。因此,Struts2通过使用配置常量的MultipartRequestWrapper处理多部分请求

struts.multipart.parser=jakarta

它对应于多部分请求适配器JakartaMultiPartRequest,用于解析请求并将文件放置到由该常量struts定义的位置。多部分。saveDir,如果未设置此常量,则javax。servlet。上下文默认情况下使用tempdir

您可以使用ServletActionContext获取MultipartUrestWrapper,请参阅我们如何上传文件。

然后,fileUpload拦截器,它是defaultStack的一部分,使用maltipart请求获取所有接受的文件、接受的文件名和接受的内容类型,并将它们放到操作上下文中。

然后,params拦截器,它是defaultStack的一部分,使用该操作上下文html" target="_blank">参数,将它们放在操作属性中。

当多部分请求被包装时,这是由Dispatcher完成的,并且在包装器被实例化时被解析,如果上传完成没有错误,您可以检查SaveDir中的文件。

要执行文件上载,请确保提交多部分请求,即表单enctype属性为“多部分/表单数据”,拦截器应用于显式引用它们或隐式使用拦截器的defaultStack的操作。在操作中,使用文件名、内容类型和文件的getter/setter创建属性。如果上载成功,请在操作属性中检查文件。

要了解更多信息,您可以练习以下示例:

  • Struts 2文件上传示例
 类似资料:
  • 本文向大家介绍Struts2+uploadify多文件上传实例,包括了Struts2+uploadify多文件上传实例的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Struts2+uploadify多文件上传的具体代码,供大家参考,具体内容如下 首先我这里使用的是  Jquery  Uploadify3.2的版本 导入相关的CSS  JS   接下来是  上传的 JSP 页面代码

  • 本文向大家介绍Uploadify上传文件方法,包括了Uploadify上传文件方法的使用技巧和注意事项,需要的朋友参考一下 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示。不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载。 先给大家展示下效果图: 修改: 报找不到uploadify-can

  • 本文向大家介绍ASP.NET文件上传控件Uploadify的使用方法,包括了ASP.NET文件上传控件Uploadify的使用方法的使用技巧和注意事项,需要的朋友参考一下 对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步机制,当大文件通过HTTP方

  • 本文向大家介绍ASP.NET多文件上传控件Uploadify的使用方法,包括了ASP.NET多文件上传控件Uploadify的使用方法的使用技巧和注意事项,需要的朋友参考一下 对于Uploadify文件上传之前已经讲过一次(文件上传~Uploadify上传控件),只不过没有涉及到多文件的上传,这回主要说一下多个文件的上传,首先,我们要清楚一个概念,多文件上传前端Uploadify是通过轮训的方式去

  • 本文向大家介绍jQuery文件上传插件Uploadify使用指南,包括了jQuery文件上传插件Uploadify使用指南的使用技巧和注意事项,需要的朋友参考一下 对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持 Flash,主要特性:支持多文件上传、HTML5版本可拖拽上传、实时上传进度条显示、强大的参数 定制功能,如文件大小、文件类型、按钮图片定义、上传文件脚本

  • 主要内容:创建视图文件:,创建action类:,配置文件:,错误消息:Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传。上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的目录,以确保数据不丢失。 请注意,服务器有一个安全策略可能会禁止写到目录以外的临时目录和属于web应用的目录。 在Struts中的文件上传是通过预先定义的拦截文件上传拦截器这是可通过org.apache.struts2.in