Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX发送的PHP应用程序引擎将$u文件[“file”][“tmp”u名称]上载到云存储_Php_Ajax_Google App Engine_Google Cloud Storage - Fatal编程技术网

使用AJAX发送的PHP应用程序引擎将$u文件[“file”][“tmp”u名称]上载到云存储

使用AJAX发送的PHP应用程序引擎将$u文件[“file”][“tmp”u名称]上载到云存储,php,ajax,google-app-engine,google-cloud-storage,Php,Ajax,Google App Engine,Google Cloud Storage,我正在尝试使用云库将文件上载到云存储,发现问题是$\u文件[“文件”][“tmp\u名称”]。通常我会在普通服务器中使用移动上传的文件($\u FILES[“file”][“tmp\u name”],$new\u file\u name),但在appengine中,这是不可能的,您需要使用此功能上传到云存储 require __DIR__ . '/../../vendor/autoload.php'; use Google\Cloud\Storage\StorageClient; functio

我正在尝试使用
云库
将文件上载到云存储,发现问题是
$\u文件[“文件”][“tmp\u名称”]
。通常我会在普通服务器中使用
移动上传的文件($\u FILES[“file”][“tmp\u name”],$new\u file\u name)
,但在appengine中,这是不可能的,您需要使用此功能上传到云存储

require __DIR__ . '/../../vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
function upload_object($bucketName, $objectName, $source) {
    $storage = new StorageClient();
    $file    = fopen($source, 'r');
    $bucket  = $storage->bucket($bucketName);
    $object  = $bucket->upload($file, [
        'name' => $objectName
    ]);
}
$new_file_name = "";
$new_file_name = "file-".rand(10,90000).".pdf";
upload_object('bucket-name', $new_file_name, $_FILES["file"]["tmp_name"]);
但这只能将文件从
appengine
上传到
cloudstorage
而不能将文件从
AJAX
发送到
PHP


问题必须是
vfs://root/uploads/0
但是为什么呢?

PHP函数
移动上传的文件
将文件从web服务器的临时存储移动到同一服务器上的另一个位置。此函数的第一个参数是从客户端上传的文件(
Ajax
,或任何上传机制)

您的问题是,您需要将上传的文件从web服务器上的临时位置复制到Google云存储。这是一个两步过程(上传文件、将文件复制到GS)

你有两个选择,一个有安全风险。首先是将文件上传到您的web服务器,然后将文件复制到Google云存储。第二种方法存在安全风险,即允许最终用户(客户端)直接将文件上传到谷歌云存储。一种合理的安全方法是使用
预先指定的URL

希望这个答案能够解释客户端文件上传到web服务器、然后上传到Google云存储或直接从客户端上传到Google云存储的过程