阿里云OSS访问图片自动直接下载问题,改成能预览的预览,不能预览的才下载
默认上传时未指定contentType,统一都为application/octet-stream
访问就会下载,例如:https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/example.jpg?response-content-type=APPLICATION/OCTET-STREAM
如果指定为真实的媒体类型,浏览器能打开就会直接预览,例如:https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/example.jpg?response-content-type=IMAGE/JPEG
Java获取文件真实的contentType:注意,经过测试,一定要转大写,不然会失效
import org.springframework.http.MediaType; import org.springframework.http.MediaTypeFactory; import java.net.URLEncoder; String url = "https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/example.jpg"; String contentType = MediaTypeFactory.getMediaType(url).orElse(MediaType.APPLICATION_OCTET_STREAM).toString(); String url = url + "?response-content-type="+URLEncoder.encode(contentType.toUpperCase(),"UTF-8");
oss sdk实现方式
pom引入版本
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.9.1</version> </dependency>
sdk代码实现
import org.springframework.http.MediaType; import org.springframework.http.MediaTypeFactory; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.GeneratePresignedUrlRequest; import com.aliyun.oss.model.GetObjectRequest; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.ResponseHeaderOverrides; GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(aliyunConfig.getBucket(), key); generatePresignedUrlRequest.setExpiration(expires); ResponseHeaderOverrides responseHeaderOverrides = new ResponseHeaderOverrides(); String contentType = MediaTypeFactory.getMediaType(key).orElse(MediaType.APPLICATION_OCTET_STREAM).toString(); responseHeaderOverrides.setContentType(contentType.toUpperCase()); generatePresignedUrlRequest.setResponseHeaders(responseHeaderOverrides); com.aliyun.oss.OSS oss = null;//替换为自己初始化的客户端 return oss.generatePresignedUrl(generatePresignedUrlRequest).toString();//此处是域名内网地址,注意需要转换为外网地址
分享一个淘宝、京东、拼多多、饿了么、美团、抖音等等买东西后真实返钱小技巧,
打车、外卖领券,充值话费95折好像也可以
使用教程用微信扫下方二维码查看详细说明

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix