【问题标题】:FileServiceFactory getBlobKey throws IllegalArgumentExceptionFileServiceFactory getBlobKey 抛出 IllegalArgumentException
【发布时间】:2013-03-06 15:16:30
【问题描述】:

我正在尝试使用 FileService 在 Blobstore 上创建文件。

代码如下:

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)

【问题讨论】:

    标签: google-app-engine google-cloud-datastore blobstore


    【解决方案1】:

    解决了问题。

    我必须确保以下几点:

    1. 我打电话给openWriteChannel
    2. 写一些内容(可选)
    3. 关闭频道(closecloseFinally
    4. 然后拨打getBlobKey

    这确保了getCachedKey 方法被调用(我猜是这样)或createHandle 可用。

    之前我在写内容之前尝试getBlobKey

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-18
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多