Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine FileServiceFactory getBlobKey引发IllegalArgumentException_Google App Engine_Google Cloud Datastore_Blobstore - Fatal编程技术网

Google app engine FileServiceFactory getBlobKey引发IllegalArgumentException

Google app engine FileServiceFactory getBlobKey引发IllegalArgumentException,google-app-engine,google-cloud-datastore,blobstore,Google App Engine,Google Cloud Datastore,Blobstore,我正在尝试使用FileService在Blobstore上创建一个文件 代码如下所示: public static BlobKey save(String mimeType, String value, String filename) throws IOException { FileService svc = FileServiceFactory.getFileService(); AppEngineFile file = filename == null ? svc.cre

我正在尝试使用
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)
java.lang.IllegalArgumentException:creation\u handle:String属性必须小于等于500个字符。
相反,请使用com.google.appengine.api.datastore.Text,它可以存储任意长度的字符串。
位于com.google.appengine.api.datastore.DataTypeUtils.checkSupportedSingleValue(DataTypeUtils.java:242)
位于com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:207)
位于com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:173)
在com.google.appengine.api.datastore.Query$FilterPredicate.(Query.java:900)
位于com.google.appengine.api.datastore.Query$FilterOperator.of(Query.java:75)
位于com.google.appengine.api.datastore.Query.addFilter(Query.java:351)
在com.google.appengine.api.files.FileServiceImpl.getBlobKey(FileServiceImpl.java:329)
修复了该问题

我必须确保:

  • 我调用
    openWriteChannel
  • 写一些内容(可选)
  • 关闭频道(
    Close
    closeFinally
  • 然后调用
    getBlobKey
  • 这确保调用了
    getCachedKey
    方法(我想是这样)或
    createHandle
    可用

    早些时候,我在写内容之前试图
    getBlobKey

    解决了这个问题

    我必须确保:

  • 我调用
    openWriteChannel
  • 写一些内容(可选)
  • 关闭频道(
    Close
    closeFinally
  • 然后调用
    getBlobKey
  • 这确保调用了
    getCachedKey
    方法(我想是这样)或
    createHandle
    可用

    早些时候,在编写内容之前,我试图
    getBlobKey