阿里云 OSS 生成对象的下载 URL 时,浏览器会使用保存到 OSS 的文件名作为下载文件名。
但一般业务,在保存时,会生成一个“唯一”的文件名,比如用 GUID
生成——这就导致 下载文件名
与 实际文件名
不一致的问题。
为了解决这个问题,可以在上传文件时,通过设置 Content-Disposition
来解决。
public string? PutObject(string fileName, string key, Stream content)
{
var client = GetClient();
var _ = client.PutObject(AppSettings.OSSBucketName, key, content, new ObjectMetadata()
{
ContentDisposition = $"attachment;filename*=utf-8''{HttpUtils.EncodeUri(fileName, "utf-8")}"
});
return key;
}
PS:Content-Disposition
也可以后面更新,但是也有 bug。更新的坑见 JJChen.Space: aliyun oss update object meta issue
Comments