Php 谷歌云平台-如何将图像文件上传到谷歌云存储桶?

Php 谷歌云平台-如何将图像文件上传到谷歌云存储桶?,php,google-cloud-platform,google-cloud-storage,json-api,Php,Google Cloud Platform,Google Cloud Storage,Json Api,我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容 <?php if(isset($_POST["submit"])) { // Move uploaded file to a temp location $uploadDir = 'temp/'; $filename=$_FILES["fileToUpload"]["name"]; $filesize=$_F

我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容

<?php

    if(isset($_POST["submit"]))
    {
        // Move uploaded file to a temp location
        $uploadDir = 'temp/';
        $filename=$_FILES["fileToUpload"]["name"];
        $filesize=$_FILES["fileToUpload"]["size"];
        $uploadFile = $uploadDir . basename($_FILES['fileToUpload']['name']);

        $authheaders = array(
            "Authorization: Bearer xxxxxx(my access token)",
            "Content-Type: image/jpeg",
            "Content-Length:".$filesize

        ); //The access-token has to be generate everytime after one-hour.

        if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadFile))
        {
            // Prepare remote upload data
            $uploadRequest = array(
                'fileName' => basename($uploadFile),
                'fileData' => file_get_contents($uploadFile)
            );

            // Execute remote upload
            $curl = curl_init();
            $url="https://www.googleapis.com/upload/storage/v1/b/[bucket_name]/o?uploadType=media&name=".$filename;
            curl_setopt($curl, CURLOPT_URL,$url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $authheaders);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_TIMEOUT, 30);
            curl_setopt($curl, CURLOPT_POST, 1);    
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $uploadRequest);
            $response = curl_exec($curl);
            curl_close($curl);
            echo $response;

        }
    }
?>

我正在通过以下方式上载图像:-

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload"><br>
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

选择要上载的图像:

看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示


您的文件确实显示在浏览器中

由于图像尺寸较小,因此在浏览器中不容易看到。在中,它显示了一个小的白色框,其中有四个框(2个白色框,2个灰色框)。您可以放大以确认。我相信这就是你上传的图片


您可以尝试上载尺寸稍大的不同图像,并确认其是否正常工作。

您的文件确实显示在浏览器中

由于图像尺寸较小,因此在浏览器中不容易看到。在中,它显示了一个小的白色框,其中有四个框(2个白色框,2个灰色框)。您可以放大以确认。我相信这就是你上传的图片

您可以尝试上载尺寸稍大的不同图像,并确认其是否正常工作。

根据请求主体(即您的
CURLOPT\u POSTFIELDS
)应仅包含
[JPEG\u DATA]
(即仅包含您的
文件获取内容($uploadFile)

但是在您的示例中,您为主体提供了一个数组
'fileName'
'fileData'
,这两个数组甚至对应用程序无效

谷歌云存储然后将这个
'fileName'
'fileData'
数组解释为实际的
[JPEG\u DATA]
,并将其呈现为一个JPEG文件,返回为您经常看到的小正方形图像

根据请求主体(即您的
CURLOPT\u POSTFIELDS
)应仅包含
[JPEG\u DATA]
(即仅包含您的
文件获取内容($uploadFile)

但是在您的示例中,您为主体提供了一个数组
'fileName'
'fileData'
,这两个数组甚至对应用程序无效


谷歌云存储然后将这个
'fileName'
'fileData'
数组解释为实际的
[JPEG\u DATA]
,并将其呈现为一个JPEG文件,返回为您经常看到的小正方形图像

我试着上传更大尺寸的图像,但它仍然显示sameI尝试上传更大尺寸的图像,但仍然显示相同