开发者社区> 问答> 正文

OSS使用PHP.SDK.v2传文件,ContentType设置无效

使用OSS PHP SDK v2上传文件,自己做了个测试,发现无论怎么设置Content-Type,最终上传的文件的Content-Type都是“application/octet-stream”。


上传的主要代码如下:


  //准备复制的信息
  $tmppath = $_FILES["file"]["tmp_name"];
  $targetpath = "upload/".$_FILES["file"]["name"];

  $putthings = array(
    'Bucket' => $bucket,
    'Key' => $targetpath,
    'Content' => fopen($tmppath, 'r'),
    'ContentLength' => filesize($tmppath),
    'Expires' => new \DateTime("+10 days"),
    'Content-Type' => $_FILES["file"]["type"],
  );
  $res = $client->putObject($putthings);


  文件上传成功,其中Expires标签也设置成功,就是'Content-Type'设置没用。
  $_FILES["file"]["type"]这个就算改成直接文本“text/plain”也不行。









展开
收起
realsatan 2014-10-19 17:30:30 7660 0
2 条回答
写回答
取消 提交回答
  • 回1楼wood23的帖子
    果然是SDK的问题啊,现在的V2是beta版本,V1的SDK只有下载,都没有文档,是不是也是废弃的节奏?..
    2014-10-20 00:06:03
    赞同 展开评论 打赏
  • ReOSS使用PHP.SDK.v2传文件,ContentType设置无效
    PHP2里没有对这个进行处理。
    我看到源码里是直接设置为默认content-type。
        protected function commandOptions() {
            return array(
                OSSOptions::CONTENT_TYPE => OSSUtils::DEFAULT_CONTENT_TYPE,
            );
        }
    const DEFAULT_CONTENT_TYPE = "application/octet-stream";
    你看看把这个地方改了,能生效吗?

    据说PHP2后续不再维护了,还是用PHP1 吧。

    PHP1
    如果没有设置content-type会根据后缀名设置content-type
    也可以自己指定。

    $content_type = MimeTypes::get_mimetype(strtolower($extension));
    自动获取

    -------------------------

    回2楼realsatan的帖子
    如果这个版本也废弃,你就发工单,骂醒他们。
    2014-10-19 22:19:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载