JQuery uploadify插件无法正常工作

我首先使用了primefaces FileUpload组件,但它没有用。 总是给出“HTTP错误”。 所以我认为这个组件有一些错误,并转到普通的旧JQuery并尝试使用uploadify。 但我仍然得到同样的错误。 我正在使用Container Managed Security。 这是不能正常工作的原因吗?

这是我的剧本: –

$(document).ready(function(){ $('#photoInput').uploadify({ 'script' : '/Blogger/fileUploadServlet', 'uploader' : './uploadify/uploadify.swf', 'cancelImg' : './uploadify/cancel.png', 'auto' : true }); 

UPDATE

响应标题:

 X-Powered-By Servlet / 3.0,JSF / 2.0 Server GlassFish v3
 Set-Cookie JSESSIONID = a23a36b147ac171f8abbf64406cd; 路径= /博客
 Content-Type text / html; charset = UTF-8
 Content-Length 1430 Date Thu,29 Apr 2010 15:16:12 GMT

请求标题

主机localhost:8080 User-Agent Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.1.6)Gecko / 20091215 Ubuntu / 9.10(karmic)Firefox / 3.5.6 
接受text / html,application / xhtml + xml,application / xml; q = 0.9,* / *; q = 0.8 
 Accept-Language en-us,en; q = 0.5 
接受编码gzip,收缩 
 Accept-Charset ISO-8859-1,utf-8; q = 0.7,*; q = 0.7 
 Keep-Alive 300 
连接保持活着 
 Cookie用户名= laala; 密码=潘卡尔;  JSESSIONID = a029f59bed8ba0c22fb27a612bf2;  treeForm:树喜= treeForm:树:应用;  JSESSIONID = 962073f17f3d0ebb37536f789b90 Cache-Control max-age = 0 **

这是我从未执行过的servlet: –

 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(); } } } }); 

由于你没有发布HTTP请求/响应头,所以它在黑暗中有点射击。 但常见的原因是文件上载请求没有使用相同的会话,而有问题的Web应用程序需要该会话。 您可以通过请求标头中缺少的cookie轻松发现它。

要解决此问题,请更新该行

 'script': '/Blogger/fileUploadServlet', 

 'script': '/Blogger/fileUploadServlet;jsessionid=${pageContext.session.id}', 

然后重试。

更新 :相对URL可能有误。 什么是JSF页面的绝对URL? 什么是上传servlet的绝对URL? 您需要从中提取正确的相对URL。 现在你已经指定了带有斜杠的相对URL /它相对于域根,即它绝对会成为http://localhost:8080/Blogger/fileUploadServlet

您可能需要考虑将其放在一边,并使用空白/小型游乐场设置重试,如我在本答案的“更新”部分中所述,并查看它是否在没有所有其他可能令人不安的因素的情况下工作。