PHP文件上传到谷歌硬盘
我正在尝试使用API将文件上传到Google Drive。上传过程工作正常,但问题是驱动器上上传的文件是空的(没有任何显示)。为什么? 下面是上传的PHP代码PHP文件上传到谷歌硬盘,php,google-api,google-drive-api,google-api-php-client,Php,Google Api,Google Drive Api,Google Api Php Client,我正在尝试使用API将文件上传到Google Drive。上传过程工作正常,但问题是驱动器上上传的文件是空的(没有任何显示)。为什么? 下面是上传的PHP代码 DEFINE("TESTFILE", $_FILES['myFile']); DEFINE('TYPE', $_FILES["myFile"]["type"]); $file = new Google_Service_Drive_DriveFile(); $file->setName('HelloWorld');
DEFINE("TESTFILE", $_FILES['myFile']);
DEFINE('TYPE', $_FILES["myFile"]["type"]);
$file = new Google_Service_Drive_DriveFile();
$file->setName('HelloWorld');
$file->setDescription('A test document');
$result = $service->files->create(
$file,
array(
'data' => TESTFILE,
'mimeType' => TYPE,
'uploadType' => 'media'
)
);
}
catch(Exception $e){
echo $e->getMessage();
}
这是HTML表单:
<div>
<form enctype="multipart/form-data" method="POST">
<input type="file" name= "myFile">
<input type ="submit">
</form>
代码中缺少中间步骤 您需要首先将上载的文件保存到本地磁盘(作为临时文件),然后将该文件读回变量或文件句柄,然后在调用
$service->files->create()
时传递该变量或文件句柄以代替TESTFILE
像这样的
$file_tmp = $_FILES["myFile"]["tmp_name"];
$file_type = $_FILES["myFile"]["type"];
$file_name = basename($_FILES["myFile"]["name"];
move_uploaded_file($file_tmp, "path/to/upload/".$file_name);
$file_data = file_get_contents("path/to/upload/".$file_name);
$file = new Google_Service_Drive_DriveFile();
$file->setName('HelloWorld');
$file->setDescription('A test document');
$result = $service->files->create(
$file,
array(
'data' => $file_data,
'mimeType' => $file_type,
'uploadType' => 'media'
)
);
但请记住,作为最佳实践,验证您上传的文件的类型、大小等是否正确代码>是需要避免的。这是个寓言。最好使用。此外,PHP完全能够从tmp目录中读取文件内容而无需移动它。Xorifelse是正确的,从“tmp”中读取文件内容而无需移动它。更改内容:“数据”=>file\u get\u内容($file\u tmp);您忘记上载文件内容了,因为您只上载了描述文件的文件元数据。这里有大量关于不同类型文件上载的示例。