将文件上载到云端硬盘时添加自定义属性

时间:2014-06-06 18:21:22

标签: google-drive-api google-api-java-client

我尝试使用Google API Java客户端库通过Android应用将文件上传到云端硬盘。我想在上传文件时为文件添加一些自定义属性:

File body = new File();
body.setTitle( localFile.getName() );
body.setDescription( "This is a test file made by Android Gro." );
body.setParents( Collections.singletonList( new ParentReference().setId( parentId ) ) );

ArrayList<Property> props = new ArrayList<>();
props.add( new Property().set( "GroFileType", "List" ).setVisibility( "PUBLIC" ) );
props.add( new Property().set( "GrotocolVersion", "0.1" ).setVisibility( "PUBLIC" ) );
body.setProperties( props );

client.files().insert( body, new FileContent( "text/plain", localFile )).execute();

如果我没有添加属性(注释掉setProperties()行),一切都很好。但是,如果我这样做,我会得到以下异常:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code": 400,
  "errors": [
    {
      "domain": "global",
      "message": "The allowable values are letters, numbers, and the characters .!@$%^&*()-_/",
      "reason": "invalid"
    }
  ],
  "message": "The allowable values are letters, numbers, and the characters .!@$%^&*()-_/"
}

知道这意味着什么吗?谷歌搜索这个确切的异常消息不会产生任何结果。我觉得很难相信我的属性中的问题是真的,因为我只使用字母,数字和句点。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。什么不起作用是Property.set(String,Object)调用。但是,如果使用两个单独的Property.setKey(String)和Property.setValue(String)调用,则不会生成此错误。