aliyun / alibabacloud-csharp-sdk

59 stars 32 forks source link

[BUG] OSS SDK存在Content-Type强制覆盖导致用户设置无效 #16

Open LeaFrock opened 1 year ago

LeaFrock commented 1 year ago

起因

在通过自定义域名访问OSS部分文件时,希望可以直接在浏览器中预览而非触发下载操作。

按照官方文档《通过文件URL访问图片无法预览而是以附件形式下载?》的说法,只需要设置Content-Disposition为inline即可。

但通过新版SDK上传图片、音频等文件后,通过浏览器访问地址仍始终触发浏览器下载操作。而旧版本SDK上传后,操作结果符合预期。

调查结果

在旧SDK中,会根据文件扩展名来决定Content-Type,如png图片文件是image/png

而在新版SDK中,则直接在AlibabaCloud.OpenApiClient.Client请求前headers["content-type"]强制覆盖成了application/octet-stream。在OSS Browser客户端查看文件时,其HTTP头如下:

1668763573863

将Content-Type改成image/png后,访问图片地址成功显示预览而非触发下载。

这应该是一个Bug,希望能尽快修复!@yndu13

WessonStar commented 1 year ago

@LeaFrock 请问你怎么解决的

LeaFrock commented 1 year ago

@WessonStar 只能使用旧的,或者自己单独对用到的几个接口做封装。

阿里云团队似乎对.NET SDK的实现质量并不十分重视。

WessonStar commented 1 year ago

@LeaFrock 我发现 OSS 在一定程度内是兼容 AWS S3 协议的,所以使用最新版的 S3 SDK 操作 Object 即可。亲测可用,Content-Type 正常设置了

LeaFrock commented 1 year ago

@WessonStar 你说的是这个吗?曲线救国了属于是 🤣

不过,哪天不再兼容S3或者SDK有什么功能调整,可能又会遇到新问题,感觉也是在埋坑。最好还是阿里云官方提供高质量的.NET SDK,哎……

WessonStar commented 1 year ago

@LeaFrock 但是目前,三个sdk里,s3 是最值得信赖的。阿里云明显对于 sdk 的维护不上心(很多年)。另一方面,也应当减少对 oss 专有特性的依赖。

cipchk commented 10 months ago

@sdk-team @peze @yndu13 都快一年了,都能提供一下修复呢?