我使用带有分块功能的 dropzone js 来获取一个大文件并将其分解,每个部分都被发送到 PHP,并且该大文件的所有部分都有一个 mime 类型应用程序/八位字节流(如果您将将文件块放在一起,它将是视频/mp4)现在我想做的是将文件重新放在 Google Drive 中,这是我的 PHP 代码:
public function addFile($filename, $content, $description = '')
{
$file = new \Google\Service\Drive\DriveFile();
$file->setName($filename);
$file->setParents([$_ENV['FOLDER_ID']]);
$file->setDescription($description);
$result = $this->driveService->files->create(
$file,
[
'data' => $content,
'mimeType' => 'application/octet-stream',
'uploadType' => 'resumable'
]
);
return sprintf('https://drive.google.com/file/d/%s/view?usp=sharing', $result->getId());
}
我遇到的问题是,当我期望将 1 个文件放在一起时,每个块都会上传到我的 Google 云端硬盘,我正在尝试做的事情是否可能?
我认为您必须将服务器本地磁盘上的块写入一个文件中。您可以使用
file_put_contents( $filename, $chunk, FILE_APPEND );
然后使用 dropzone
complete
事件处理程序通过异步请求通知服务器上传已完成
myDropzone.on("complete", function(file) {
myDropzone.removeFile(file);
fetch('/upload-complete', {method:'POST', file})
});
//upload-conplete.php
$file = $_POST['file'];
// chack status of uploaded file here
var_dump($file);
// add file to Google drive here if all is well