阿里云OSS设置Content-Type

发现阿里云OSS默认Content-Type类型都是application/octet-stream

这样上传图片等文件的时候,浏览器不能直接打开,直接下载,很不方便

这个是提交阿里工单,给到的回复

【问题定义】

oss修改content-type

【处理建议】

您好,关于批量修改meta信息的问题,推荐您使用两种方法:

1、使用sdk进行接口的调用处理,参考下:(Java为例子)

https://help.aliyun.com/document_detail/84840.html?spm=a2c4g.11186623.6.811.66f0c1f65NwVs5

2、使用ossutil命令行工具进行处理,支持前缀以及目录之类的方式哈。

参考下:

https://help.aliyun.com/document_detail/120056.html?spm=a2c4g.11186623.6.735.181165d32BkZMj

我用的语言是php,几乎没有解决

用的laravel5.2框架,OSS用的johnlui/AliyunOSS

git地址是:https://github.com/johnlui/AliyunOSS

查了很多资料,一直进入的误区是Content-Type是在$options = [];里面

官方文档也是

https://help.aliyun.com/document_detail/88508.html?spm=a2c4g.11186623.6.1097.4ffe720fx7gxsu

实际上查看johnlui/AliyunOSS代码

在路径vendor/johnlui/aliyun-oss/src/AliyunOSS.php

修改AliyunOSS.php文件里uploadFile方法

public function uploadFile($key, $file, $options = [])

  {

    $handle = fopen($file, 'r');

    $value  = $this->ossClient->putObject(array_merge([

      'Bucket'        => $this->bucket,

      'Key'           => $key,

      'Content'       => $handle,

      'ContentLength' => filesize($file),

 'ContentType' => getimagesize($file)['mime'],    //增加这一行

    ], $options));

    fclose($handle);

    return $value;

  }

测试,修改成功

你可能感兴趣的:(阿里云OSS设置Content-Type)