【问题标题】:Google Cloud Storage Content-Type image/jpeg is invalidGoogle Cloud Storage Content-Type image/jpeg 无效
【发布时间】:2014-03-14 15:47:39
【问题描述】:

使用 PHP createUploadUrl 和选项 Content=type image/jpeg 将图像上传到 Google Cloud Storage 时,我收到一个错误记录为

"Invalid options supplied: Content-Type..."

这是代码:

$options = [ 'gs_bucket_name' => 'mybucket', 'Content-Type' => 'image/jpeg' ];
$upload_url = CloudStorageTools::createUploadUrl('/upload.php', $options);

图像已上传,但显示为二进制/八位字节流文件(GCS 默认)。我也尝试过 mimeType 和 image/jpg。我做错了什么?

【问题讨论】:

    标签: php google-app-engine google-cloud-storage


    【解决方案1】:

    将 Content-Type 作为上下文的一部分传递给 move_uploaded_file(),而不是作为 createUploadURL 选项的一部分。

    【讨论】:

    【解决方案2】:

    上传文件后,不要像大多数文档显示的那样使用 move_uploaded_file(),因为它在移动过程中会丢失类型信息

    更糟糕的是,如果您尝试在移动之前设置它并将类型设置为默认值 - binary/octet-stream,它会忽略 stream_context_create()

    只需使用 rename() 代替 move_uploaded_file()。括号中的参数是相同的。

    如果有帮助,这里就是我的例子。

    简单一:

    foreach($_FILES['userfile']['name'] as $idx => $name) 
    {     
        $original = $root_path . '/' . $name;;
        rename($_FILES['userfile']['tmp_name'][$idx], $original); 
    }
    

    这是一个更复杂的强制类型(如果你想的话):

    foreach($_FILES['userfile']['name'] as $idx => $name) 
    {     
        $original = $root_path . '/' . $name;
        $options = ['gs' => ['Content-Type' => $_FILES['userfile']['type'][$idx]]];
        stream_context_set_default($options);
        rename($_FILES['userfile']['tmp_name'][$idx], $original); 
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 2014-01-08
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2022-06-30
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多