上传插件不';不要调用Javaservlet
我刚开始使用Uploadify flash插件,而不是标准的HTML UI。上传插件不';不要调用Javaservlet,java,jquery,jsp,servlets,uploadify,Java,Jquery,Jsp,Servlets,Uploadify,我刚开始使用Uploadify flash插件,而不是标准的HTML UI。 遇到了下一个问题: 当我单击“上载文件”链接时,会显示进度并显示“已完成”状态,但实际上,这并没有发生任何事情,Java Servlet不会从后端调用。 前面有上传servlet和下一步执行的上传: < form enctype="multipart/form-data" method="post" target="uploadFrame" action="<%= request.getContextPat
遇到了下一个问题:
当我单击“上载文件”链接时,会显示进度并显示“已完成”状态,但实际上,这并没有发生任何事情,Java Servlet不会从后端调用。
前面有上传servlet和下一步执行的上传:
< form enctype="multipart/form-data" method="post" target="uploadFrame"
action="<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}">...
提供Uploadify插件后,UI现在看起来像:
插件部分(配置):
...
text+=“$j('#uploadify')。uploadify({”;
text+=“'uploader':'kneportlets/js/lib/uploadify/scripts/uploadify.swf'”;
text+=“'script':'/uploadFile?portletId=${portletId}&remoteFolder=',”;
text+=“'cancelImg':'kne-portlets/js/lib/uploadify/cancel.png'”;
oScript.text+=“‘文件夹’:”“”;
text+=“'queueID':'fileQueue',”;
oScript.text+=“'auto':false”“;
text+=“'multi':false”“;
//oScript.text+=“'sizeLimit':1000”;
oScript.text+=“});”;
oScript.text+=“});”;
...
此处的“scripts”参数指向后端的Javaservlet
是文件夹路径,其值为\\file srv\demo
上传部分:
<input type="file" name="uploadify" id="uploadify" />
<a href="javascript:$j('#uploadify').uploadifyUpload();">Upload Files</a>
我的错在哪里
插件配置中的“Script”参数指向后端的JavaServlet,它已经完成,但Servlet并没有被触发
“脚本”参数不正确时出错:
感谢您的帮助。这可能有很多原因(另请参见我发布的评论)
- 未加载外部JS
- JS代码在语法/逻辑上无效
- 请求URL无效
- Servlet根本没有映射
- Servlet映射到错误的
url模式
- Servlet无法启动/init
/WebContent/uploadify
文件夹中/WebContent/upload.jsp
文件,如下所示:
上传测试
$(文档).ready(函数(){
$('#uploadify')。uploadify({
'uploader':'uploadify/uploadify.swf',
“脚本”:“uploadServlet”,
'文件夹':'/uploads',
'cancelImg':'uploadify/cancel.png'
});
$(“#上载”)。单击(函数(){
$('#uploadify')。uploadifyUpload();
返回false;
});
});
com.example.UploadServlet
,如下所示,几乎没有任何帮助(只是放在/WEB-INF/lib
中):
package.com.example;
导入java.io.IOException;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.apache.commons.fileupload.FileItem;
导入org.apache.commons.fileupload.disk.DiskFileItemFactory;
导入org.apache.commons.fileupload.servlet.ServletFileUpload;
公共类UploadServlet扩展了HttpServlet{
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException
{
System.out.println(“UploadServlet已调用。这里是所有上载的文件:”;
试一试{
列表项=新建ServletFileUpload(新建DiskFileItemFactory()).parseRequest(请求);
用于(文件项:项){
如果(!item.isFormField()){
System.out.println(“Name:+item.getName());
System.out.println(“Size:+item.getSize());
System.out.println(“类型:”+item.getContentType());
}
}
}捕获(例外e){
抛出新的ServletException(e);
}
}
}
web.xml
中注册了com.example.UploadServlet
,如下所示:
上传servlet
com.example.UploadServlet
上传servlet
/上传servlet
上传
链接,看到上传百分比计数器增长到100%,我终于在标准输出中看到了以下内容:
UploadServlet invoked. Here are all uploaded files:
Name: glassfish-v3-windows.exe
Size: 50402555
Type: application/octet-stream
已调用UploadServlet。以下是所有上传的文件:
名称:glassfish-v3-windows.exe
尺寸:50402555
类型:应用程序/八位字节流
'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";
“/uploadFile?portletId=${portletId}&remoteFolder=',”;
到
'/uploadFile;jsessionid=${pageContext.session.id}?portletId=${portletId}&remoteFolder=',“;
我在uploadify 2.1.4中遇到了完全相同的问题。我花了足够长的时间来研究这个问题,发现嵌套URI路径(即/folder1/folder2/fol)似乎有问题
'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=<%= decodedString %>',";
'<%= request.getContextPath() %>/uploadFile;jsessionid=${pageContext.session.id}?portletId=${portletId}&remoteFolder=<%= decodedString %>',";