Uploadify:使用Struts2无法正常工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uploadify:使用Struts2无法正常工作相关的知识,希望对你有一定的参考价值。
我的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.parseRequest(request)
返回null
。我真的不知道原因。
在Struts2中上传时,这是一个常见的错误。您不应该在操作中解析请求。我相信你已经在动作中编写了java代码。因此,Struts2通过使用配置常量的MultipartRequestWrapper
处理多部分请求
struts.multipart.parser=jakarta
对应于多部分请求适配器JakartaMultiPartRequest
,用于解析请求并将文件放到此常量struts.multipart.saveDir
定义的位置,如果未设置此常量,则默认使用javax.servlet.context.tempdir
。
你可以使用MultipartRequestWrapper
获得ServletActionContext
,请参阅How do we upload files。
然后fileUpload
interceptor,它是defaultStack
的一部分,使用maltipart请求获取所有接受的文件,接受的文件名和接受的内容类型,并将它们放入动作上下文。
然后params
interceptor,它是defaultStack
的一部分,使用该动作上下文参数,将它们置于动作属性中。
当多部分请求被包装(由Dispatcher
完成)并在实例化包装器时解析时,您可以检查saveDir
中的文件,如果上传完成且没有错误。
要执行文件上传,请确保提交多部分请求,即表单enctype
属性为"multipart/form-data"
,拦截器应用于显式引用它们的动作或隐式使用拦截器的defaultStack
。在操作中,使用文件名,内容类型和文件的getter / setter创建属性。如果您的上传成功,请检查操作属性中的文件。
要了解更多信息,您可以练习以下示例:
以上是关于Uploadify:使用Struts2无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
解决jQuery uploadify在非IE核心浏览器下无法上传
工作中碰到uploadify插件两个版本:HTML5和Flash
解决thinkphp3.2.3下使用uploadify 302错误的方法
解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法