Google ドライブ API と Java を使用してファイルを Google ドライブにアップロードしようとしています。
アップロードしようとしているファイルは docx ファイルです (以前に Drive API を使用してエクスポートされました)。私の問題は、スウェーデン語の文字 (åäö など) を含むファイル名を持つファイルをアップロードすると、Drive API が例外をスローすることです。
アップロードのコードは基本的に次のようになります。
File file = new File("/path/to/file.docx");
String contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
File fileToUpload = new File()
.setTitle("abc")
.setMimeType(contentType);
FileContent mediaContent = new FileContent(contentType, file);
try {
Drive.Files.Insert request = client.files().insert(fileToUpload, mediaContent);
request.execute();
} catch (IOException e) {
logger.error("Could not restore file");
throw e;
}
このコードは実際には正常に動作します。しかし、setTitle("abc") を setTitle("abcö") に変更すると、次の例外が発生します。
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
Bad Request
google-api-services-drive のバージョン v2-rev82-1.14.2-beta および v2-rev82-1.15.0-rc を使用してみましたが、同じ結果になりました。
それが役立つ場合、私はOSXを使用しています(Windowsはこの種の問題をより頻繁に抱えているようです)。
編集: いくつかの実験の後、FileContent オブジェクト (実際のファイル コンテンツ) を除外し、メタ データをアップロードする空のファイルのみを作成すると、タイトルのスウェーデン語の文字は問題ないことがわかりました。
Drive.Files.Insert request = client.files().insert(fileToUpload);
結局のところ、主な問題はタイトルではないようです。ファイル データを空のファイルに追加する方法がわかれば、完了です。
EDIT2:解決策が見つかりました!
追加:request.getMediaHttpUploader().setDirectUploadEnabled(true);
直接アップロードを有効にします (以前に何を使用していたかはわかりません)。これにより、Google ドライブが私の奇妙なスウェーデン語の文字を気にしなくなったようです (繰り返しますが、理由はわかりません)。
これは私が最終的に得たコードです(単純化して):
File file = new File("/path/to/file.docx");
String contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
File fileToUpload = new File()
.setTitle("abcö")
.setMimeType(contentType);
FileContent mediaContent = new FileContent(contentType, file);
try {
Drive.Files.Insert request = client.files().insert(fileToUpload, mediaContent);
request.getMediaHttpUploader().setDirectUploadEnabled(true);
request.execute();
} catch (IOException e) {
logger.error("Could not restore file");
throw e;
}
これで、大きなファイルの再開可能なアップロードのサポートを追加するだけで済みますが、それは別の話です。
EDIT3:ちなみに、ここに私を正しい軌道に乗せたドキュメントがあります。