1

FileServiceBlobstoreでファイルを作成するために使用しようとしています。

コードは次のようになります。

public static BlobKey save(String mimeType, String value, String filename) throws IOException
{
    FileService svc = FileServiceFactory.getFileService();
    AppEngineFile file = filename == null ? svc.createNewBlobFile(mimeType) : svc.createNewBlobFile(mimeType, filename);
    key = svc.getBlobKey(file); //throws exception
}

しかし、次の例外が発生します。

java.lang.IllegalArgumentException: creation_handle: String properties must be 500 characters or less.  
Instead, use com.google.appengine.api.datastore.Text, which can store strings of any length.
    at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedSingleValue(DataTypeUtils.java:242)
    at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:207)
    at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:173)
    at com.google.appengine.api.datastore.Query$FilterPredicate.<init>(Query.java:900)
    at com.google.appengine.api.datastore.Query$FilterOperator.of(Query.java:75)
    at com.google.appengine.api.datastore.Query.addFilter(Query.java:351)
    at com.google.appengine.api.files.FileServiceImpl.getBlobKey(FileServiceImpl.java:329)
4

1 に答える 1

1

問題を修正しました。

私は次のことを確認する必要がありました:

  1. 私はopenWriteChannel
  2. コンテンツを書く(オプション)
  3. チャネルを閉じます(closeまたはcloseFinally
  4. そして、getBlobKey

これにより、getCachedKeyメソッドが呼び出されるか(そうだと思います)、またはcreateHandle使用可能になります。

私は以前、getBlobKeyコンテンツを書く前にしようとしていました。

于 2013-03-06T17:45:35.137 に答える