天天看点

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

  最近项目需要把附件部署到阿里云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不能用斜划线/开头,往往我们以前做的本地上传都是/开头的,这里需要注意处理一下,否则阿里云会返回错误。

继续阅读