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