Google Cloud Storage 不会更新现有的默认 Content-Disposition

http://img2.mukewang.com/61daa49f0001b8cb04990327.jpg

Disposition 属性创建/更新谷歌云存储对象元数据时,它是添加一个新属性而不是更新现有的 Content-Disposition。请参见下图。


我的目标是在下载对象时提供不同的名称。当我手动更新 Content-Disposition 时,它按预期工作。


我正在使用 .NET 客户端库,下面是代码


string fileNameWithExt = "filename.txt";


            using (var stream = file.InputStream)

            {

                var obj = new Google.Apis.Storage.v1.Data.Object

                {

                    Bucket = bucketName,

                    Name = fileName,

                    ContentType = "application/octet-stream",

                    Metadata = new Dictionary<string, string>

                        {

                            { "Content-Disposition", $"attachment; filename={fileNameWithExt}" }

                        }

                };


                var gcsObject = storage.UploadObject(obj, stream);


                var patchObject = new Google.Apis.Storage.v1.Data.Object

                {

                    Bucket = bucketName,

                    Name = fileName,

                    //ContentType = "text/plain",

                    Metadata = new Dictionary<string, string>

                    {

                        { "Content-Disposition", $"attachment; filename={fileNameWithExt}" }

                    }

                };

                storage.PatchObject(patchObject);


慕少森
浏览 174回答 1
1回答

繁花不似锦

GCS 对象具有多种属性,包括它们的名称、它们的内容类型,以及如您所指出的内容处置。但是,它们还有另一个属性:任意用户元数据。这是字符串的键值对列表,可以包含您喜欢的任何内容。C# 库调用自定义用户元数据键值字典Metadata。通过使用该属性,您的代码将使用“Content-Disposition”键创建自定义用户元数据条目。而是使用ContentDisposition值。像这样的东西:var patchObject = new Google.Apis.Storage.v1.Data.Object{&nbsp; &nbsp; Bucket = bucketName,&nbsp; &nbsp; Name = fileName,&nbsp; &nbsp; ContentDisposition = $"attachment; filename={fileNameWithExt}"&nbsp;}此外,如果您正在编写新的 C# 代码,我推荐更新且更易于使用的 google-cloud .NET 库:https : //googlecloudplatform.github.io/google-cloud-dotnet/
打开App,查看更多内容
随时随地看视频慕课网APP