ファイルをアップロードするコードは次のとおりです。
private function addFile(File $file, $folderProject, User $user) {
$fileToUpload = new Google_DriveFile();
$fileToUpload->setTitle($file->getName());
//set mime type
$fileToUpload->setMimeType($file->getMimeType());
//build parent and set id
$parent = new Google_ParentReference();
$parent->setId($folderProject->getId());
//set parent to file
$fileToUpload->setParents(array($parent));
$data = file_get_contents($file->getPath());
$createdFile = $this->service->files->insert($fileToUpload, array(
'data' => $data,
'mimeType' => $file->getMimeType(),
));
}
たとえば、このPHPコードを使用してdocxをアップロードすると、ファイルが追加されてGoogleドライブのWebサイトで読み取れなくなり(docxのXML構造が表示されます)、Googleドライブフォルダーに次のように表示されます。
そして、GoogleドライブUIからdocxを直接アップロードしようとすると、次のように表示されます(私が望むもの):
アプリを介してアップロードしたため、GoogleドライブUIが別の方法でファイルを開こうとするという事実から問題が発生していると確信していますが、それは望ましくありません:)
(他の種類のファイルでも同じ問題があります)
配列にパラメーターを設定しようとし'convert' = true
ましたが、アップロード中に次のエラーが発生しました。
..convert=true&uploadType=multipart&key=AI39si49a86oqv9fhb9yzXp7FCWL-cSqwFiClHZ qS3Y3r9Hw8ujtSNlZEWZyFKBp_id7LUyFaZTJ97pMeb0XqHznycK7JJ9o_Q: (500) 内部エラー
ドキュメント: https://developers.google.com/drive/v2/reference/files/insert
=>とにかく、変換するのが正しい解決策だとは思いません.GoogleドライブUIを介してファイルをアップロードしたかのようにコンテンツを表示できるようにしたいだけです.
Google Drive Sync フォルダから docx を開き、編集して保存すると、Google Drive UI (W ロゴで表示) で見ることができます。