2014-10-24 3 views
0

я хочу, чтобы загрузить изображение на мой AppEngine для этого у меня есть Ме- ханизма MyImage (из другого источника в интернете):JSP - Невозможно загрузить изображение на Google Appengine

@Entity 
public class MyImage implements Serializable 
{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 


    @Id 
    private Long id; 

    static int ID=1; 


    private String name; 


    Blob image; 

    public MyImage() 
    { 
     id=(long) ID++; 
    } 

    public MyImage(String name, Blob image) 
    { 
     this.name = name; 
     this.image = image; 
     id=(long) ID++; 
    } 

    // JPA getters and setters and empty contructor 
    // ... 
    public Blob getImage() 
    { 
     return image; 
    } 

    public void setImage(Blob image) 
    { 
     this.image = image; 
    } 
} 

у меня есть этот код (также от internt): (это сервлет, который используется на странице JSP)

public class UploadImg extends HttpServlet 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public void doPost(HttpServletRequest req, HttpServletResponse res) 
    { 
     // Get the image representation 

     try 
     { 
      HelpDebug.msg="start of servlet"; 
      ServletFileUpload upload = new ServletFileUpload(); 
      FileItemIterator iter = upload.getItemIterator(req); 
      FileItemStream imageItem = iter.next(); 
      InputStream imgStream = imageItem.openStream(); 
      HelpDebug.msg="after open stream"; 
      // construct our entity objects 

      Blob imageBlob = new Blob(IOUtils.toByteArray(imgStream)); 
      MyImage myImage = new MyImage(imageItem.getName(), imageBlob); 

      HelpDebug.msg="after creating Image"; 
      // persist image 
      BackendFactory.getInstance().SendImg(myImage); 
      HelpDebug.msg="after get instance "; 
      // respond to query 
      res.setContentType("text/plain"); 
      res.getOutputStream().write("OK!".getBytes()); 
     } catch (Exception ex) 
     { 
      try 
      { 
       res.getOutputStream().write(ex.getMessage().getBytes()); 
      } catch (IOException e) 
      { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

, когда я проверить зритель источника данных я могу видеть, что объект от типа MyImage был создан , но не с правильным содержанием.. (поле имени есть нуль)

я думаю, что у меня есть проблемы с получением информации из файла JSP следующим образом:

<%@page import="com.example.servlets.HelpDebug"%> 
<%@ page language="java" contentType="text/html; charset=windows-1255" 
    pageEncoding="windows-1255"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" 
    content="text/html; charset=windows-1255"> 
<title>Insert title here</title> 
</head> 
<body> 


    <form action="UploadImg" method="post" enctype="multipart/form-data"> 

     <input name="name" type="text" value=""> <br /> <input 
      name="imageField" type="file" size="30"> <br /> <input 
      name="Submit" type="submit" value="Sumbit"> 
     <% 
      HelpDebug.desc = request.getParameter("name") == null ? "null :P" 
        : request.getParameter("name"); 
      out.println(HelpDebug.getMsg()); 
     %> 
    </form> 


</body> 
</html> 

сервлета declartion:

<servlet> 
     <servlet-name>UploadImg</servlet-name> 
     <servlet-class>com.example.servlets.UploadImg</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>UploadImg</servlet-name> 
     <url-pattern>/UploadImg</url-pattern> 
    </servlet-mapping> 

любых идей ??

ответ

1

Чтобы загрузить изображения, выполните следующие действия: Blobstore Java API Overview. Это намного проще, чем то, что вы пытаетесь сделать в своем коде.

Смежные вопросы