1

我正在努力使用google-api-php-client,我正在尝试将我的 data.xml 发送到谷歌驱动器指定的文件夹,并且使用此代码它可以完美运行。但是在谷歌驱动器上创建的文件总是空的/0字节/。

    <?php
    require_once 'vendor/autoload.php';

    putenv('GOOGLE_APPLICATION_CREDENTIALS=../html/my-key.json');

    $client = new Google_Client();
    $client->useApplicationDefaultCredentials();
    $client->setScopes(['https://www.googleapis.com/auth/drive']);
    $client->setSubject('my-service@account.com');

    $service = new Google_Service_Drive($client);

    $data = file_get_contents("data.xml");

    $fileMetadata = new Google_Service_Drive_DriveFile(
        array('name' => 'data',
            'data' => $data,
            'mimeType' => 'text/xml',
            'parents' => array('myFolderID'),
            'uploadType' => 'media'));

    $file = $service->files->create($fileMetadata, array('fields' => 'id'));

我的 data.xml 文件:

    <?xml version="1.0"?>
    <data>
        <item>
            <id>2546485</id>
            <c>0</c>
            <p>0,00</p>
        </item>
        <item>
            <id>2546809</id>
            <c>0</c>
            <p>0,00</p>
        </item>
        <item>
            <id>10982762</id>
            <c>30</c>
            <p>4,26</p>
        </item>
    </data>

到目前为止,我已经尝试更改 mimeTypes 和 uploadTypes,但没有成功。File_get_contents正确返回 .xml 数据。

提前感谢您的帮助。

4

1 回答 1

1
  • 您想使用 Drive API v3 将 XML 文件上传到 Google Drive 中的特定文件夹。
  • 您想使用 php 来实现这一点。

如果我的理解是正确的,那么这个修改呢?

请修改$fileMetadata = new Google_Service_Drive_DriveFile(array())如下$file = $service->files->create($fileMetadata, array())

修改后的脚本:

$fileMetadata = new Google_Service_Drive_DriveFile(array(
  'name' => 'data',
  'parents' => array('myFolderID'),
));

$file = $service->files->create($fileMetadata, array(
  'data' => $data,
  'mimeType' => 'text/xml',
  'uploadType' => 'media',
  'fields' => 'id',
));
  • 在这个修改后的脚本中,它假设您已经能够使用 Drive API 将文件上传到 Google Drive。
  • 我认为在你的情况下,uploadType也可以使用multipart.

参考:

如果这不是你想要的方向,我很抱歉。

于 2019-12-03T07:25:02.120 回答