2012-08-10 79 views
0

嗨,我是新的谷歌应用程序引擎。我通过这个tutorial使用URL在Blobstore中插入Blob

我运行这些示例项目successfully.in此我要上传文件,然后使用这个网址我要上传文件到Blob存储区返回回同一file.but我已经给了一个网址然后再次下载。 任何人都可以请帮助如何通过网址上传文件。 这里是index.jsp文件

<%@ page import="com.google.appengine.api.blobstore.BlobstoreServiceFactory" %> 
<%@ page import="com.google.appengine.api.blobstore.BlobstoreService" %> 

<% 
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
%> 


<html> 
    <head> 
     <title>Upload Test</title> 
    </head> 
    <body> 
     <form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data"> 
      <input type="text" name="foo"> 
      <input type="file" name="myFile"> 
      <input type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 

这里的代码是serve.java代码

package org.ritesh; 
import java.io.IOException; 

import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.google.appengine.api.blobstore.BlobKey; 
import com.google.appengine.api.blobstore.BlobstoreService; 
import com.google.appengine.api.blobstore.BlobstoreServiceFactory; 

public class Serve extends HttpServlet { 
    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 

public void doGet(HttpServletRequest req, HttpServletResponse res) 
    throws IOException { 
     BlobKey blobKey = new BlobKey(req.getParameter("blob-key")); 
     blobstoreService.serve(blobKey, res); 
    } 
} 

UploadServlet代码是在这里

package org.ritesh; 

import java.io.IOException; 
import java.util.Map; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.google.appengine.api.blobstore.BlobKey; 
import com.google.appengine.api.blobstore.BlobstoreService; 
import com.google.appengine.api.blobstore.BlobstoreServiceFactory; 

public class UploadServlet extends HttpServlet { 

    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 


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

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

     if (blobKey == null) { 
      res.sendRedirect("/"); 
     } else { 
      res.sendRedirect("/serve?blob-key=" + blobKey.getKeyString()); 
     } 
    } 
} 

它运行良好,请提出任何修改,使它通过一个URL上传一个文件

回答

0

如果你想让用户发布一个文件到你自己的URL,那么你需要使用Files API来写入blobstore。

但是,如果可以的话,最好使用已经处理上载的方法。它允许上传更大的文件,并且最有可能效率更高,因为上传是由Google基础架构而不是您的应用程序实例处理的。