2010-04-29 4 views
0

먼저 Primefaces FileUpload 구성 요소를 사용했는데 작동하지 않았습니다. 항상 "HTTP 오류"를 보냈습니다. 그래서이 구성 요소에 버그가 있다고 생각하고 일반 JQuery에 가서 uploadify를 사용해 보았습니다. 하지만 여전히 같은 오류가 발생합니다. 컨테이너 보안을 사용하고 있습니다. 이것이 제대로 작동하지 않는 이유입니까? JQuery 업로드 플러그인이 작동하지 않습니다.

내 스크립트입니다 -

$(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; Path=/Blogger 
Content-Type text/html;charset=UTF-8 
Content-Length 1430 Date Thu, 29 Apr 2010 15:16:12 GMT 

요청 헤더

 
Host 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 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 300 
Connection keep-alive 
Cookie username=laala; password=panchal; JSESSIONID=a029f59bed8ba0c22fb27a612bf2; treeForm:tree-hi=treeForm:tree:applications; JSESSIONID=962073f17f3d0ebb37536f789b90 Cache-Control max-age=0** 
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(); 
     } 
    } 
} 

         }); 
+0

질문을 업데이트하여이 페이지를 반환 한 HTTP 응답 헤더와 업로드 한 HTTP 요청 헤더를 포함하십시오. Firebug 또는 Fiddler를 사용하여 HTTP 헤더를 가져올 수 있습니다. – BalusC

+0

파일을 업로드 할 때 요청 헤더가 하나입니까? 이것은 하나처럼 보이지 않습니다. BTW : 정말 쿠키에 사용자 이름/암호를 저장하면 안됩니다! 서버 측 세션에 저장하십시오. – BalusC

+0

아니요, 페이지를 새로 고침하고 이것이 제가 가진 것입니다. 파일을 업로드 한 후 요청 및 응답 헤더를 얻으려면 어떻게해야합니까? – TCM

답변

1

는 HTTP 요청/응답 헤더를 게시하지 않았기 때문에, 그것은 어둠 속에서 조금의 촬영입니다 - :는 그리고이 실행되지 않습니다 내 서블릿이다. 하지만 일반적인 원인은 파일 업로드 요청이 해당 세션을 사용하고 있지 않은데 문제가되는 웹 응용 프로그램에서 필요합니다. 요청 헤더에 누락 된 쿠키로 그 사실을 쉽게 발견 할 수 있습니다.

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

에 선

'script': '/Blogger/fileUploadServlet', 

를 업데이트하고 다시 시도,이 문제를 해결합니다.

업데이트 : 상대 URL이 잘못되었을 수 있습니다. JSF 페이지의 절대 URL은 무엇입니까? 업로드 서블릿의 절대 URL은 무엇입니까? 그것으로부터 올바른 상대 URL을 추출해야합니다. 현재 상대 경로를 슬래시 /으로 지정 했으므로 도메인 루트와 관련이 있습니다. 즉, 절대적으로 http://localhost:8080/Blogger/fileUploadServlet이됩니다.

this answer의 "업데이트"부분에서 설명한대로 이것을 비워두고 빈/작은 놀이터 설정으로 다시 시도해보고 다른 모든 방해 요소없이 작동하는지 확인하십시오.

+0

안녕 Balusc, 나는 당신이 말한대로 편집했습니다. jsessionid를 추가 한 후에도 여전히 오류가 발생합니다.GlassFish V3를 사용하고 있습니다. 플래시를 Java와 함께 사용하려면 먼저 설정을해야합니까? 제발 도와주세요 : ( – TCM

+0

JS를 파이어 버그로 디버그하면 제대로 실행 되나요? 나는 더 많은 요청 헤더에 대해 uploadify를 보내고 싶습니다. 방화범의'Net' 탭에서 찾을 수 있습니다. JSF를 사용하고 있으므로, '$ ('# photoInput')'이 올바른 요소 ID인지 확인하십시오 JSF 구성 요소 ID가 아니라 생성 된 HTML 구성 요소의 클라이언트 ID (rightclick 페이지, 소스보기) – BalusC

+0

예 BalusC, photoInput is 내가 h : 양식에 prependId = false를 설정했기 때문에 clientId. 또한 구성 요소가 Jquery의 모양과 느낌을 가져옵니다. ID가 올바르지 않으면 해당 모양과 느낌이 들지 않습니다. 그물 탭에서 있었다. 내가 일단 업로드 버튼을 클릭하고 파일을 선택하면 모든 헤더가 표시되지 않습니다. 내가 얻을 수있는 "HTTP - 오류"입니다. 헤더는 인터넷 탭에서 업데이 트되지 않습니다. 어떻게해야합니까? 지금? – TCM

관련 문제