2013-12-08 1 views
1

Blobstore를 사용하여 여러 이미지를 업로드하는 간단한 웹 응용 프로그램을 만들려고합니다. 성공적으로 이미지를 Blobstore에 업로드 할 수있었습니다. 그러나 이미지가 업로드 될 때 업로드 용 서블릿은 리디렉션하려고하는 페이지로 리디렉션되지 않습니다. IT는 단순히 다음과 같은 URL이있는 빈 페이지를 보여줍니다. myapplicationId.appstore.com/_ah/upload/.... (keyvalue)Google App Engine Blobstore 이미지

업로드라는 서블릿의 다른 페이지로 리디렉션을 변경할 수 없습니다. 나는 또한 이미지를 제공하려고했지만 그것을 할 수 없다.

나를 인도 해 주실 수 있습니까?

이미지를 업로드하기 위해 자바의 Google 표준 코드를 사용하고 있습니다.

내 JSP는 다음과 같습니다

<%@ page import="com.google.appengine.api.blobstore.BlobstoreServiceFactory" %> 
<%@ page import="com.google.appengine.api.blobstore.BlobstoreService" %> 
<script> 
<% 
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

%> 

</script> 
<html> 
<head> 
<title>Show My Picture(s)</title> 
</head> 
<body> 

<h1>Show My Picture(s)</h1> 
<hr/> 
<h2>Upload picture(s)</h2> 
<form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data"> 
Upload File(s) : 
<input type="text" name="filename"/> 
<input type="file" name="myPics" multiple="multiple"/> 
<input type="submit" value="Upload Picture"/> 
</form> 
</html> 

내 업로드 서블릿 :

package photos; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Date; 
import java.util.Map; 
import java.util.logging.Logger; 

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 photos.Upload; 

import com.google.appengine.api.blobstore.BlobKey; 
import com.google.appengine.api.blobstore.BlobstoreService; 
import com.google.appengine.api.blobstore.BlobstoreServiceFactory; 
import com.google.appengine.api.datastore.DatastoreService; 
import com.google.appengine.api.datastore.DatastoreServiceFactory; 
import com.google.appengine.api.datastore.Entity; 
import com.google.appengine.api.datastore.KeyFactory; 
import com.google.appengine.api.images.ImagesService; 
import com.google.appengine.api.images.ImagesServiceFactory; 
import com.google.appengine.api.users.User; 
import com.google.appengine.api.users.UserService; 
import com.google.appengine.api.users.UserServiceFactory; 

/** 
* Servlet implementation class Upload 
*/ 
@WebServlet("/Upload") 
public class Upload extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    private final static Logger _logger = Logger.getLogger(Upload.class.getName()); 
    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

    public void doPost(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

      try{ 
      Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req); 
      BlobKey blobKey = blobs.get("myPics"); 


      if (blobKey == null) { 
       res.sendRedirect("/"); 
      } 
      else { 
       res.sendRedirect("/upload?blob-key="+blobKey.getKeyString()+"blobSize="+blobs.size()); 
       } 
      }catch(Exception e){ 
       e.printStackTrace(); 
       System.out.println("Document failed to POST, redirecting back to upload."); 
       res.sendRedirect("/index.jsp"); 
      } 
    } 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 

     String uploadedImageKey = req.getParameter("blob-key"); 
     PrintWriter out = resp.getWriter(); 
     resp.setHeader("Content-Type", "text/html"); 
     resp.sendRedirect("/viewPics.jsp"); 
     //out.println(req.getParameter("blobSize")+" images have been successfully uploaded"); 



    } 
} 

가 어디 잘못 갈거야?

답변

0

내 생각에 자조가 최선의 도움이라고 생각합니다. 나는이 문제를 해결했다. 단순히 업로드를 createUploadUrl에서 업로드로 변경했습니다.