2012-08-10 78 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基礎架構而不是您的應用程序實例處理的。