我正在生成使用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。
我做错了什么?
答案 0 :(得分:1)
这是一个常见问题。不要在请求元数据中设置MIME类型。 Google云端硬盘将决定要转换为的MIME类型。
标记为// what here ?
的行应该省略。
答案 1 :(得分:0)
您需要做的就是使用正确的.docx MIME类型更新getType()。
docx=> application/vnd.openxmlformats-officedocument.wordprocessingml.document
我有同样的问题,这段代码修复了它!