发现阿里云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

1649b8c49fb9afb4a8dea49f2387b8c3.png

实际上查看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;

}

测试,修改成功

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐