2012-05-06 65 views
2

關於如何上傳到Blobstore的blobstore document。它顯示通過JSP + Servlet方法上傳。文件上傳到AppEngine Blobstore

由於我的應用程序基於GWT,我需要適應GWT RPC(而不是JSP)。

所以在我的應用程序RPC服務實現:

public class MyServiceImpl extends RemoteServiceServlet implements 
    MyService { 

    public String getUploadUrl() { 
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
    return blobstoreService.createUploadUrl("/upload") 
    } 
} 

這是正確的做法或有任何其他方式做正確?雖然我沒有嘗試過這段代碼。

上傳的二進制文件最大範圍從字節到2MB。

關於如何上傳到Blobstore的blobstore document。它顯示通過JSP + Servlet方法上傳。

由於我的應用程序基於GWT,我需要適應GWT RPC(而不是JSP)。

所以在我的應用程序RPC服務實現:

public class MyServiceImpl extends RemoteServiceServlet implements 
    MyService { 

    public String getUploadUrl() { 
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService(); 
    return blobstoreService.createUploadUrl("/upload") 
    } 
} 

這是正確的做法或有任何其他方式做正確?雖然我沒有嘗試過這段代碼。

上傳的二進制文件最大範圍從字節到2MB。

當我嘗試了這個代碼,這個是服務器端的控制檯日誌:

May 07, 2012 6:35:53 AM com.google.appengine.tools.development.LocalResourceFileServlet doGet 
WARNING: No file found for: /crossdomain.xml 

然後在客戶端GWT.log在RPC能夠生成一個URL但它不工作:

[INFO] [blobrpc] - Success fetch upload url: http://127.0.0.1:8888/_ah/upload/aglub19hcHBfaWRyGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxgDDA 

回答

2

createUploadUrl()創建一個Url,需要一個帶有Content-type標頭multipart/form-data的HTTP POST。

如果您想使用GWT-RPC,則需要使用Blobstore FileService API在服務器端創建文件。

+0

我看到的,但如果使用FormElement形式= Document.get()createFormElement(); form.setAction(url_from_rpc);這有效嗎?或者應用程序會通過這種方法獲得一些Session問題? – xybrek

+0

我設法用Blobstore FileService API編寫了一個工作代碼,但我需要編寫一些方法來處理流式文件上傳。謝謝你的提示。 – xybrek

+0

'gwtupload'項目爲GAE提供了一些服務器端支持,包括流:http://code.google.com/p/gwtupload/source/browse/#svn%2Ftrunk%2FGwtUpload%2Fgae%2Fsrc%2Fmain%2Fjava%2Fgwtupload %2Fserver%2Fgae –

0

如果我們要將文件發佈到該URL,它將被保存在blobstore中。但請注意,本地開發Web服務器的默認URL爲http://127.0.0.1:8888/,而blobstore生成的URL爲http://:8888 /。這將在稍後導致問題,至於安全原因,Plupload將無法將文件發佈到另一個域。這隻發生在本地開發服務器上,已發佈的應用程序將只有一個URL。通過在Eclipse中編輯運行配置來修復它,將-bindAddress添加到參數中。這將導致本地開發服務器在http://:8888 /上託管Web應用程序。您可能需要在GWT瀏覽器插件中允許它在此更改後加載應用程序。

Multiple file upload using GWT and AppEngine Blobstore?

相關問題