php - PHP 文件上传到 Google Drive
问题描述
我正在尝试使用 API 将文件上传到 Google Drive。上传过程正常,但问题是驱动器上的上传文件是空的(没有什么可显示的)。为什么?
这是上传的PHP代码。
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>
解决方案
您的代码中缺少中间步骤。
您需要先将上传的文件保存到本地磁盘(作为临时文件),然后将该文件读回变量或文件句柄,然后您将TESTFILE
在$service->files->create()
调用时将其传递给您。
像这样的东西...
$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'
)
);
但请记住验证您上传的文件的类型、大小等是否正确,作为最佳实践。
推荐阅读
- c - C fopen errno 未设置
- java - 使用java绕过带有rest api的keycloak登录系统并生成领域/应用程序URL
- android - MediaSession架构中MediaPlayer和SeekBar之间的Android通信
- java - WebView 不工作 PID: 31928 | 安卓工作室
- c++ - 将 FLOAT 值插入 mysql 表
- c# - 为什么我的项目中的程序集绑定失败?
- javascript - FirebaseError:[code=invalid-argument]:函数 Query.where() 需要有效的第三个参数,但未定义
- python - 我的目录应用显示空白页,我该怎么办?
- html - 将 html 、 css 页面连接到页眉和页脚
- c# - ASP.NET Core 3.1 SignalR:未调用方法