转换标志为TRUE的插入操作失败

时间:2013-02-02 15:31:44

标签: google-drive-api

我正在生成使用xdocreport生成WORD文件的报告。

从生成的报告中,我创建了一个InputStreamContent,其中包含MIME-TYPE "application/vnd.openxmlformats-officedocument.wordprocessingml.document"(MS WORD - DOCX)以写入Google云端硬盘:

// create Word file stream using xdocreport
OutputStream2InputStream outputStream = new OutputStream2InputStream(); // buffer
report.process(context, outputStream);
// create inputstream for Google Drive
InputStreamContent inputStream = new InputStreamContent("application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        outputStream.getInputStream());
inputStream.setLength(outputStream.size());

写MSWORD文档很精细(CONVERT = FALSE):

File file = new File();
Insert insertOperation = service.files().insert(file, inputStream).setConvert(false);
file.setTitle("test.docx");
file.setMimeType(inputstream.getType());
File result = insertOperation.execute();

导致在我的Google云端硬盘上创建的WORD DOCX文件。

用CONVERT = TRUE FAILS写同样的INPUTSTREAM

File file = new File();
Insert insertOperation = service.files().insert(file, inputStream).setConvert(true);
file.setTitle("test");
//file.setMimeType(inputstream.getType()); // what here ? 
File result = insertOperation.execute();

结果

1。如果未设置mime类型:新创建的文件result 0字节 MIME类型:application / vnd.google-apps.kix

2。设置mime类型时: MIME-TYPE设置为“application / vnd.google-apps.document”并且convert = true,结果为400:BAD REQUEST。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这是一个常见问题。不要在请求元数据中设置MIME类型。 Google云端硬盘将决定要转换为的MIME类型。

标记为// what here ?的行应该省略。

答案 1 :(得分:0)

您需要做的就是使用正确的.docx MIME类型更新getType()。

docx=>   application/vnd.openxmlformats-officedocument.wordprocessingml.document

我有同样的问题,这段代码修复了它!