2013-02-02 1 views
0

이미지 업로드 기능이 필요한 응용 프로그램을 만들고 있습니다. 나는 this 자습서와 App Engine Documentation을 따라 왔습니다.GAE 및 GWT - response.sendRedirect가 리디렉션되지 않습니다.

이미지가 제대로 업로드되고 서버가 FileUpload HttpServlet의 doPost 기능으로 리디렉션됩니다. 요청에서 BLOB 키를 읽고 데이터 저장소에 저장할 수 있습니다.

내 문제는 클라이언트에게 응답을 보내는 것입니다. 내가 본 모든 것은 response.sendRedirect 함수를 사용하는 것을 가리키고 있지만, 아직 성공적이지는 못했다.

public class FileUpload extends HttpServlet 
{ 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

    Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(request); 

    BlobKey blobKey = blobs.get("picFileUpload").get(0); 

    ShipHull shipHull = new ShipHull(); 
    shipHull.setShipHullName(request.getParameter("hullNameText")); 
    shipHull.setShipImageURL("/shipbuilder/blobService?blob-key=" + blobKey.getKeyString()); 

    PersistenceManager pm = PMF.get().getPersistenceManager(); 

    try 
    { 
     pm.makePersistent(shipHull); 
    } 
    catch (Exception e) 
    { 
     String hi = "hello"; 
    } 
    finally 
    { 
     pm.close(); 
    } 

    Boolean test = response.isCommitted(); 

    response.sendRedirect("/shipbuilder/FileUpload?gwt.codesvr=127.0.0.1:9997&shipHullName=" + shipHull.getShipHullName()); 

    test = response.isCommitted(); 

    return; 
} 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException 
{ 
    String id = req.getParameter("shipHullName"); 
    resp.setHeader("Content-Type", "text/html"); 
    resp.getWriter().println(id); 
} 

} 

동일한 서블릿에서 클라이언트를 doGet으로 리디렉션하려고합니다. 나는 이것을 시도했지만 gwt.codesvr=127.0.0.1:9997shipHullName=" + shipHull.getShipHullName())없이 doGet 함수에 도달하지 못했다. 나는 또한 https://www.google.com을 시도했다.

이것은 모두 개발 서버에서 수행되고 있습니다 (아직 프로덕션 서버에서는 시도하지 않았습니다).

이미지 저장 상태를 반환하는 다른 방법이있는 경우 (파일 이름이 이미 사용 된 것처럼), 다른 것을 시도해도 괜찮습니다.

감사합니다.

+0

당신이 제안에 어떤 행운이 있었나요? – SSR

답변

0

성공/실패 문자열을 resp 개체에 넣을 수 있습니까?

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
{ 
try{ 
    processFileUploads(req) 
    resp.getWriter().print("Success"); 
}{ 
catch(Exception e){ 
    resp.getWriter().println("Unable to upload the file - Upload Failed"); 
} 
} 
+0

미안, 응답 속도가 느린 봤지만 그래, 나는 이것을 시도했다. 클라이언트는 작가를 사용할 때 여전히 null 응답을보고있다. 다른 서버 프로세스에서이 서블릿 서블릿으로 전달되기 때문에 blobstore에서의 특별한 동작이라고 느낀다. 다음 기회에 클라이언트 코드를 게시합니다. 어쩌면 그것도 약간의 빛을 비칠 수 있습니다. –

0

문제를 파악했습니다. 나는 this post과 같은 문제를 겪고 있었다고 생각한다.

GWT 개발 모드 도구 상자 아이콘을 클릭하고 웹 서버 "탄약 상자"(내 컴퓨터 이름 "및 코드 서버"127.0.0.1 ")를 추가해야했습니다. 브라우저에서 해당 개발 링크로 이동하면, 모두 당신이 SSR을 준 경우에도 대답은.이 도메인 전환 문제였다했습니다.

감사를 도움.

+0

답변을 선택하여 쿼리를 닫을 수 있습니다. 당신이 다른 답변을 upvote 도움을 생각한다면 :). stackoverflow를 깨끗하게 유지하십시오. – SSR