1

GAEにファイルをアップロードする場合、次のようにコードを使用できます。

 //here creating a blob store service
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
//here declaring the datastore service
   DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
//creating entity
   Entity emp = new Entity("Employee");
//set the property
   emp.setProperty("First Name", fname);
   emp.setProperty("Last Name", lname);
//storing the data in GAE
   datastore.put(Employee);

これで、Googleクラウドストレージにファイルを同じようにアップロードする必要がある場合は、バケットを設定して、次のようにチャネルを開くことができます。

//Creating file service
FileService fileService = FileServiceFactory.getFileService();

//setting bucket name,object name & type
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
       .setBucket(BUCKETNAME)
       .setKey(FILENAME)
       .setMimeType("text/html")
       .setAcl("public_read")
       .addUserMetadata("myfield1", "my field value");

//creating the new writable file 
 AppEngineFile writableFile =fileService.createNewGSFile(optionsBuilder.build());
//opening the lock and writing channel
boolean lock = false;
FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, lock);

この後、Googleクラウドストレージにファイルを保存する方法がわかりません。この開発者ページのGoogleCloudStorage Java APIの概要を参照しましたが、ファイルのアップロードではなく、オブジェクトの読み取りと書き込みのみが表示されます。

Googleクラウドストレージにファイルをアップロードするためのアイデアを教えてください。

あなたの助けに感謝します。

4

1 に答える 1

2

このようなもの:

UploadOptions uploadOptions = UploadOptions.Builder.withGoogleStorageBucketName("bucket");
String uploadUrl = blobstoreService.createUploadUrl("/on_upload_success", uploadOptions));

次に、そのURLにPOSTを実行します。ただし、「/ on_upload_success」ハンドラーでは、GSからファイルのBlobKeyを取得していますが、ファイル名は取得していません(このバグのためhttp://code.google.com/p/googleappengine/issues/detail?id=8337)。したがって、blobkeyを使用してGAEからそのデータを読み取ることしかできません。

于 2012-12-26T10:33:25.280 に答える