Java JQuery uploadify插件不工作
我第一次使用primefaces文件上传组件,但它不起作用。总是给HTTP错误。所以我认为这个组件有一些bug,于是转到普通的JQuery并尝试使用uploadify。但我还是犯了同样的错误。我正在使用容器管理的安全性。这就是不能正常工作的原因吗 这是我的剧本:-Java JQuery uploadify插件不工作,java,jquery,servlets,Java,Jquery,Servlets,我第一次使用primefaces文件上传组件,但它不起作用。总是给HTTP错误。所以我认为这个组件有一些bug,于是转到普通的JQuery并尝试使用uploadify。但我还是犯了同样的错误。我正在使用容器管理的安全性。这就是不能正常工作的原因吗 这是我的剧本:- $(document).ready(function(){ $('#photoInput').uploadify({ 'script'
$(document).ready(function(){
$('#photoInput').uploadify({
'script' : '/Blogger/fileUploadServlet',
'uploader' : './uploadify/uploadify.swf',
'cancelImg' : './uploadify/cancel.png',
'auto' : true
});
更新
响应标题:
X-Powered-By Servlet/3.0, JSF/2.0 Server GlassFish v3
Set-Cookie JSESSIONID=a23a36b147ac171f8abbf64406cd; Path=/Blogger
Content-Type text/html;charset=UTF-8
Content-Length 1430 Date Thu, 29 Apr 2010 15:16:12 GMT
因为您没有发布HTTP请求/响应头,所以这有点像瞎猜。但是一个常见的原因是文件上传请求没有使用相同的会话,而这正是Web应用程序所需要的。您可以通过请求头中缺少的cookie轻松发现这一点 要解决此问题,请更新该行
'script': '/Blogger/fileUploadServlet',
到
然后重试
更新:相对URL可能错误。JSF页面的绝对URL是什么?上传servlet的绝对URL是什么?您需要从中提取正确的相对URL。现在,您已经用一个前导斜杠/指定了相对URL,因此它是相对于域根的,也就是说,它绝对是http://localhost:8080/Blogger/fileUploadServlet.
您可能想考虑把这一点放在一边,在我在更新部分中概述的空白/小游戏者设置中重新尝试,看看它是否在没有其他可能干扰因素的情况下工作。
请更新您的问题,包括返回此页的HTTP响应头和发送的HTTP请求头。上传。您可以使用firebug或fiddler获取HTTP头。请求头是您上载文件时的头吗?这个看起来不像那个。顺便说一句:你真的不应该在cookie中存储用户名/密码!存储在服务器端会话中。不,我刷新了页面,这就是我得到的。上传文件后。如何获取请求和响应头?Firebug中的Net选项卡,尤其是XHR子选项卡。若并没有触发,那个么这仅仅意味着JS代码是伪造的或者根本并没有执行。为了进一步明确这一点,您需要运行JS调试器来逐行跟踪执行。好的!但是BalusC,我没有对javascript文件做任何更改。我只是从uploadify站点获取的.zip文件中复制粘贴了该文件。会错吗?嗨,巴卢斯克,我按你说的编辑。添加jsessionid后,我仍然得到错误。我用的是Glassfish V3。在将Flash与Java结合使用之前,是否需要进行一些设置?请帮助我:用Firebug调试JS。它执行正确吗?我对uploadify发送的请求头更感兴趣。您可以在Firebug的“网络”选项卡中找到它。由于您使用的是JSF,您是否确保$'photoInput'是正确的元素ID?它不应该是JSF组件ID,而是生成的HTML组件右键单击页面的客户端ID,查看源代码。是的,BalusC,photoInput是clientId,因为我在h:form中设置了prependId=false。该组件还获得了jqueryuploadify的外观。如果身份证不正确,它就不会有那种外观和感觉。我发送给您的标题仅来自“网络”选项卡。当我点击uploadify的browse按钮并选择file时,我并没有看到任何标题。我得到的只是HTTP错误。在“网络”选项卡中不会更新标题。我现在该怎么办?package Servlets;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
@WebServlet(name = "fileUploadServlet", urlPatterns = {"/fileUploadServlet"})
public class fileUploadServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, FileUploadException {
PrintWriter out = response.getWriter();
try {
System.out.println("Executed!!");
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
Iterator e = items.iterator();
while(e.hasNext()){
System.out.println(e.next().toString());
}
} finally {
out.close();
}
}
}
});
'script': '/Blogger/fileUploadServlet',
'script': '/Blogger/fileUploadServlet;jsessionid=${pageContext.session.id}',