Google云端存储内容类型图片/ jpeg无效

时间:2014-02-15 05:08:25

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

使用PHP createUploadUrl和选项Content = type image / jpeg将图像上传到Google云端存储时,我收到错误记录为

"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。我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

只需使用重命名()代替 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); 
}