发现阿里云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;
}
测试,修改成功
网友评论