Google Drive API,Meta-Data

时间:2015-03-31 20:04:30

标签: google-drive-api

我正在将文档成功上传到Google云端硬盘,但我的元数据似乎没有正确回复给我。

protected File insertFile(Drive service, List<String> parentIds, com.google.drive.FileContent fileContent, File googleFile)throws IOException {
  // Set the parent folder.
  if (parentIds != null && parentIds.size() > 0) {
      List<ParentReference> parentReferences = new ArrayList<ParentReference>();
      for (String parentId : parentIds ){
          parentReferences.add(new ParentReference().setId(parentId));
      }
      googleFile.setParents( parentReferences ); 
  }

  try {

      googleFile = service.files().insert(googleFile, fileContent).execute();

      // Uncomment the following line to print the File ID.
      System.out.println("File ID: " + googleFile.getId());

      return googleFile;
  } 
  catch (IOException e) {
      System.out.println("An error occured: " + e);
      return null;
  }
}

上面是我的插入声明,下面是我发送的有关该文档的详细信息。

  

{description = XXXXXXX发票, fileExtension = pdf,   indexableText = {text = XXXXXXX Invoice} ,labels = {restricted = false},   mimeType = application / pdf,parents = [{id = 0B_owsnWRsIy7S1VsWG1vNTYzM1k}],   properties = [{key = DocumentType,value = 11}],t​​itle = XXXXXXX Invoice}

当我使用此代码获取同一文档时

protected InputStream downloadFile(Drive service, File file)throws IOException {
    if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {

        HttpResponse resp =
            service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl()))
                .execute();
        return resp.getContent();
    } 
    else {
      // The file doesn't have any content stored on Drive.
      return null;
    }
}

我得到的大部分文本都减去了可索引的文本和文件扩展名,这是正确的(不想显示,因为它包含很多噪音信息)?

1 个答案:

答案 0 :(得分:2)

此处有两个不同的问题。

1)fileExtension是一个只读字段,因此被忽略。检索信息时,它是从原始标题/文件名派生的。由于您的标题不包含“.pdf”,因此它被设置为空。

2)indexableText是只写的,我们不允许你在设置后检索它;它仅由驱动器后端用于服务搜索查询。

您可以阅读有关file resource in our documentation的不同元数据属性的更多信息。