1

GoogleAppEngineでBLOBを保存して提供しようとしています。

// Save the data as a blob
final FileService fileService = FileServiceFactory.getFileService();
final AppEngineFile file = fileService.createNewBlobFile("application/zip", "nameOfSavedFile");
final FileWriteChannel writeChannel = fileService.openWriteChannel(file, true);
writeChannel.write(ByteBuffer.wrap(data));
writeChannel.closeFinally();

// Load the blob data
Query query = new Query("__BlobInfo__"); 
query.addFilter("filename", FilterOperator.EQUAL, "nameOfSavedFile"); 
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
PreparedQuery pq = datastore.prepare(query); 
List<Entity> entList = pq.asList(FetchOptions.Builder.withLimit(1)); 
String blobKeyString = entList.get(0).getKey().getName();

BlobstoreService blobStoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobKey blobKeyLoaded = new BlobKey(blobKeyString);
blobStoreService.serve(blobKeyLoaded,response);

上記のコードを一度実行すると、うまくいくようです。しかし、既存のファイルを同じ名前の新しいファイルで上書きする目的で同じコードを再度実行すると、古いファイルが提供されるだけです。

古いファイルを新しいファイルで上書きする方法を誰かが説明できますか?

ありがとう!

4

2 に答える 2

1

AFAIKは、アップロードハンドラーBlobInfoを介してblobをアップロードした場合にのみ、生成/更新されます。

ブロブを「手動で」、つまりを介して変更した場合FileServiceBlobInfoは作成/更新されません。この場合BlobInfo、手動で更新するか、まったく使用せずに、キー/名前をカスタムエンティティに保存する必要があります。

于 2012-08-22T07:11:14.763 に答える
0

Blobstoreに保存されているファイルは、上書きできません。

ファイルの作成時に同じ名前を使用すると、ファイルがGoogle Storageに保存されている場合、ファイルを上書きできます。

于 2012-08-22T03:36:04.710 に答える