2010-09-19 48 views
2

我正在使用Java中的Appengine應用程序,它允許用戶通過名爲PaintWeb的HTML5畫布庫(http://code.google.com/p/paintweb /)繪製 上傳圖像。使用BlobstoreService和ImageService上傳/提供從HTML5畫布繪製的圖像

目前我有一個servlet,它接收來自 paintweb javascript庫的XMLHttpRequest POST作爲一個帶有密碼的圖像。

  1. Paintweb.js庫發送的XMLHttpRequest POST

    send  = 'dataURL=' + encodeURIComponent(ev.dataURL), 
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}; 
    
  2. 甲定製servlet解碼形式編碼的圖像數據作爲blob和 存儲在與相關聯的繪圖實體

  3. 數據存儲區

    自定義servlet服務於數據存儲區中的Blob作爲 ContentType(「image/png」)我很好奇如果我可以使用新的BlobstoreService和ImageService 個功能上傳我的HTML5畫布圖像,併爲他們服務,爲純斑點(如本教程GWT BlobstoreService and ImageService

根據文檔(http://code.google.com/appengine/docs/java/blobstore/overview.html#Uploading_a_Blob)這似乎是主要的停止點,我需要張貼形式與:

<input type="file" name="myFile"> 

我認爲這不可能從Paintweb。如果在服務器端有某種方法將blob存儲在Blob存儲中(而不是數據存儲),那麼可能需要解決一個問題,因爲您可以從中獲得不使用CPU配額來服務映像的好處。

使用Appengine URL Fetch 服務並將圖像blob上傳從服務器端轉發到Blobstorage 「createUploadURL()」是否可能或甚至是一個好主意?

http://code.google.com/appengine/docs/java/urlfetch/usingjavanet.html

看起來這可能是可能的,但不知道它會節約資源我在長期運行(該圖像是可以比的上載時間觀看許多許多次簡單的小圖紙,所以我感覺好像我會從BlobstoreService獲得存儲/服務的好處

+0

您可以使用下一個http://www.nixtu.info/2013/06/how-to-upload-canvas-data-to-server。html從畫布的dataurl創建一個blob。並使用創建的網址將該blob發送到blobstore – ccsakuweb 2014-02-13 11:01:05

回答

2

這裏最好的選擇是使用一個XMLHTTPRequest和一個包含創建圖像的multipart/form-data編碼體。 blobstore期望遵循的程序將如下所示:

  1. 撥打一個JSON API,返回一個新的blobstore上傳URL
  2. 構建一個包含圖像數據作爲一個部分的MIME消息,以及您希望包含的任何其他字段。
  3. 使用XMLHTTPRequest將表單上傳到Blobstore。

爲了做到這一點,您需要自己構建MIME消息,或者找一個Javascript庫來爲您做。