我已經上傳至文件系統使用API來Blob存儲的圖像。這些文件已經成功上傳,我可以在相應的目錄中看到這些斑點。解碼與文件系統API創建的文件
但後來,我該如何解碼這些文件,發送回來的時候給客戶端或使用Blob存儲區API檢索到的,我能夠得到的圖像?眼下/ Blob存儲/寫:XXX是不是對我很有用,因爲當我在包裝的<img src="/blobstore/writable:xxx" />
路徑,它並沒有給我一個圖像。
我已經上傳至文件系統使用API來Blob存儲的圖像。這些文件已經成功上傳,我可以在相應的目錄中看到這些斑點。解碼與文件系統API創建的文件
但後來,我該如何解碼這些文件,發送回來的時候給客戶端或使用Blob存儲區API檢索到的,我能夠得到的圖像?眼下/ Blob存儲/寫:XXX是不是對我很有用,因爲當我在包裝的<img src="/blobstore/writable:xxx" />
路徑,它並沒有給我一個圖像。
我把它固定的:
FileService fileService = FileServiceFactory.getFileService();
AppEngineFile writableFile = fileService.createNewBlobFile(request.getParameter("qqfile"));
FileWriteChannel writeChannel = null;
try {
byte[] buffer = new byte[4096]; // 4MB
lock = true;
writeChannel = fileService.openWriteChannel(writableFile, lock);
// increase the buffer size as you are reading from the
// input stream. Read the input stream into buffer
for (int n; (n = stream.read(buffer)) != -1;){
writeChannel.write(ByteBuffer.wrap(buffer));
}
} finally {
writeChannel.closeFinally();
}
BlobKey blobKey = fileService.getBlobKey(writableFile);
ImagesService imagesService = ImagesServiceFactory.getImagesService();
// produces something like http://localhost:8888/_ah/img/SU52WMsoCRP3kqAvQqVW3g
String imageUrl = imagesService.getServingUrl(blobKey);
幾個選項 -
使用getServingUrl創建一個URL到你的圖像,然後返回網址作爲響應的一部分。將該URL存儲在數據存儲中,因爲該URL不會更改爲同一個blob。這也可以讓你動態調整大小和裁剪你正在服務的圖像。這些URL是公開的,所以如果您想要某種形式的訪問控制來提供您可能需要的圖像選項(2)。
使用serveBlob和請求處理程序來發送圖像。沒有動態調整大小(如果需要,可以在處理程序中自行完成),但如果需要,可以ACL對每個請求進行ACL。
月1日,我不打算將圖像存儲在Blob存儲區。相反,我正在使用文件系統API。但我是一個例外,而這樣做:'java.lang.IllegalArgumentException異常:無法讀取image'。你知道我可能做錯什麼嗎? – drecute 2012-03-02 15:20:44
FYI文件系統API存儲BLOB的任一的Blobstore或谷歌存儲。您需要從存儲的對象中生成一個blobkey。 – 2012-03-02 22:22:50