提问人:Pieter 提问时间:10/28/2023 更新时间:10/28/2023 访问量:29
使用Google Drive API下载的文件已损坏?使用服务帐户
File downloaded with Google Drive API corrupt? Using service Account
问:
我有一个表单并将文件上传到 Google 云端硬盘,如下所示 (php):
$fileMetadata = new Google\Service\Drive\DriveFile(
array(
'name' => $bestandsnaamInDoelmap,
'mimeType' => mime_content_type($file_tmp),
'parents' => array($bovenliggendeMapId),
)
);
try {
$content = file_get_contents($file_tmp);
$file = $service->files->create(
$fileMetadata,
array(
'data' => $content,
'mimeType' => mime_content_type($file_tmp),
'uploadType' => 'multipart'
)
);
} catch (Exception $e) {
return "Fout in aanmaken bestand: " . $e->getMessage();
}
然后我尝试使用以下命令下载文件:
try {
return $service->files->get($fileId, array('alt' => 'media'));
} catch (Exception $e) {
return "Fout in zoeken naar bestand " . $fileId . ": " . $e->getMessage();
}
我检查了发送到驱动器的文件中的文件大小和返回的文件大小:是相同的。 上传下载的文件也显示相同的大小,但
当我有一个带有文本“small”的小文本文件时,它会打开并显示文本“sm”。
对于二进制文件(pdf/jpg/png 等),下载的文件已损坏。
对于下载,我在 PHP 中使用:
// Haal het bestand op met behulp van de fileID
$response = get_file($downloadfileId);
$fileContent = $response->getBody()->getContents();
header('Content-Description: File Transfer');
header('Content-Type: ' . $mimeType);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . strlen($fileContent)));
// Stuur de gegevens naar de browser
echo $fileContent;
exit;
这里出了什么问题?如果我在上面的示例中将 3 添加到 strlen($fileContent),则文本文件显示“小”。对于没有帮助的二进制文件。
希望有人能帮助我。
使用 Google 云端硬盘 API 将文件上传到云端硬盘(使用服务帐号从网站)
从网站再次下载文件。
这一切都在带有 PHP 8.1 和 PHP 8.1 谷歌驱动器 API 的 Joomla 网站上。
文件应该是相等的,而不是损坏的。
答: 暂无答案
评论