1

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

从生成的报告中,我InputStreamContent使用 MIME-TYPE "application/vnd.openxmlformats-officedocument.wordprocessingml.document"(MS WORD - DOCX) 创建了一个写入 Google Drive 的文件:

// 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 Drive 上创建了一个 WORD DOCX 文件。

使用 CONVERT=TRUE 编写相同的输入流失败

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类型时:新创建的文件result0字节MIME类型:application/vnd.google-apps.kix

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

我究竟做错了什么 ?

4

2 回答 2

1

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

您标记的行// what here ?应该被排除在外。

于 2013-02-02T19:44:02.253 回答
0

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

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

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

于 2014-03-19T22:19:47.787 回答