1

ファイルをアップロードするコードは次のとおりです。

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 ロゴで表示) で見ることができます。

4

1 に答える 1

0

私も同じ問題を抱えています。

しかし、違いは、私は pdf をアップロードしていて、Google ドライブ UI で pdf を表示できるということです。

新しいpdfを追加した後、APIコードでGoogleドキュメント形式に自動的に変換する必要があります。

$mimeType = 'application/vnd.google-apps.document'; を変更すると、その後、エラー
https://www.googleapis.com/upload/drive/v2/files?convert=true&uploadType=multipart : (400) Bad Requestを下回りました

オプションのパラメータを追加すると

$createdFile = $service->files->insert($file, array(
  'data' => $data,
  'mimeType' => $mimeType,
'convert' => TRUE
));

その後、変更はありません。pdfのアップロードのみで、変換は行われません。

変換パラメーターを正確に追加する必要がある場合、何か提案はありますか?

于 2012-12-28T09:42:52.930 に答える