阿里云对象存储产品文档:通过设置HTTP头管理OSS文件元数据

阿里云 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