1

xdocreportを使用してWORDファイルを生成するレポートを生成しています。

生成されたレポートから、Googleドライブに書き込むためのInputStreamContentMIME-TYPE (MS WORD-DOCX)を使用して作成します。"application/vnd.openxmlformats-officedocument.wordprocessingml.document"

// 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ドライブにWORDDOCXファイルが作成されました。

CONVERT=TRUEで同じ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タイプを設定しない場合:新しく作成されたファイルresult0バイトで、MIMEタイプはapplication/vnd.google-apps.kixです。

2. mime type: MIME-TYPEを「application / vnd.google-apps.document」に設定し、convert = trueに設定すると、400:BADREQUESTになります。

私は何を間違っているのですか?

4

2 に答える 2

1

これは一般的な問題です。リクエストのメタデータにMIMEタイプを設定しないでください。Googleドライブは、変換先のMIMEタイプを決定します。

マークされた行は省略// what here ?してください。

于 2013-02-02T19:44:02.253 に答える
0

必要なのは、getType()を正しい.docxMIMEタイプで更新することだけです。

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

私は同じ問題を抱えていました、そしてこのコードはそれを修正しました!

于 2014-03-19T22:19:47.787 に答える