云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

阿里云OSS上传图片不能打开的解决办法

jxf315 2024-12-22 19:02:55 教程文章 40 ℃

最近项目需要把附件部署到阿里云oss,集成过程中发现上传的图片不能直接打开预览,只能下载到本地保存。

解决办法:设置ContentType

var endpoint = "阿里云OSS EndPoint";
            // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
            var accessKeyId = "阿里云OSS AccessKeyId";
            var accessKeySecret = "阿里云OSS AccessKeySecret";
            // 填写Bucket名称。
            var bucketName = "阿里云OSS BucketName";
            var client=new OssClient(endpoint, accessKeyId, accessKeySecret);
            // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
            ObjectMetadata meta = new ObjectMetadata();
            string contentType = IOHelper.GetContentType(Path.GetExtension(path));
            meta.ContentType = "image/jpeg";//这里可自行根据附件格式封装方法获取
            //meta.ContentEncoding = "utf-8";
            var objectName = "upload/1.txt";  //这里需要注意,本地一般用/开头,但是阿里云oss不能用/开头
           // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
            var localFilename = IOHelper.MapPath(path);
            client.PutObject(bucketName, objectName, localFilename, meta);

meta.ContentType = "image/jpeg";//这段是关键,不定义的话阿里云oss会默认application/octet-stream,所有附件都会被当成二进制流(或不确定文件类型)下载。

还有一个注意点是objectName不能用斜划线/开头,往往我们以前做的本地上传都是/开头的,这里需要注意处理一下,否则阿里云会返回错误。

最近发表
标签列表