使用AWS SDK for PHP上传的Amazon S3文件始终是"application/octet-stream"?

IMB*_*IMB 5 php amazon-s3 amazon-web-services

根据文档,contentType是可选的,它将尝试根据文件扩展名确定正确的mime类型.但是,它似乎永远不会猜测mime类型,并且始终默认为application/octet-stream

这是我的代码:

$s3 = new AmazonS3();

$opt = array(   'fileUpload'    => $_FILES['file']['tmp_name'],
                'storage'       => Amazons3::STORAGE_REDUCED);

$r = $s3->create_object('mybucket', $_FILES['file']['name'], $opt);
Run Code Online (Sandbox Code Playgroud)

这是我的AWS控制台的屏幕截图:

在此输入图像描述

如何在不设置contentType选项的情况下实际自动设置正确的内容类型,或者您是否真的需要手动设置?

附加信息:如果我从控制台下载文件(我最初通过SDK上传),然后使用控制台再次上传,则设置正确的Content-Type(例如:用于GIF文件的image/gif而不是application/octet-stream )

vit*_*kaz 6

尝试在创建对象时将"contentType"键添加到options数组,并使用"body"而不是"fileUpload".例如:

$s3->create_object('MY_BUCKET', 'xml_file.xml', array(
                                        'body' => '<xml>Valid xml content</xml>',
                                        'contentType' => 'text/xml'
                                    ));
Run Code Online (Sandbox Code Playgroud)

使用text/xml内容类型成功创建文件.据我所知,通过SDK上传时不会自动设置Content-Type.但是从PHP端发出mime类型并设置'contentType'属性的问题是什么?