使用C# RestSharp上传文件至GCS报‘必须指定对象名’错误排查
问题排查与解决方案
你的代码触发you must specify an object name错误的核心原因有两个:
1. 查询参数传递方式错误
GCS媒体上传接口要求name和uploadType作为URL查询参数传递,但你用的request.AddParameter在POST请求中默认会把参数放入请求体而非URL;同时你手动在URL末尾加的?会干扰RestSharp的参数拼接逻辑,导致name参数没被正确识别。
2. 缺少上传的CSV内容
就算修复参数问题,你的代码也没把CSV文件内容加入请求体,后续仍会因上传内容缺失报错。
修正后的代码
var client = new RestClient("https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o"); client.Timeout = -1; var request = new RestRequest(Method.POST); // 明确将参数添加为URL查询字符串 request.AddQueryParameter("uploadType", "media"); request.AddQueryParameter("name", "Products.csv"); request.AddHeader("Authorization", $"Bearer {_accessToken}"); request.AddHeader("Content-Type", "text/csv"); // 添加CSV文件内容(二选一即可) // 方式1:直接从本地文件读取上传 request.AddFile("file", "本地文件路径/Products.csv", "text/csv"); // 方式2:传入已读取的字节数组 // byte[] csvContent = File.ReadAllBytes("本地文件路径/Products.csv"); // request.AddParameter("text/csv", csvContent, ParameterType.RequestBody);
关键说明
- 移除URL末尾的
?,RestSharp会自动处理查询参数的拼接 - 用
AddQueryParameter确保参数被放到URL中,符合GCS接口要求 - 必须添加CSV内容到请求体,否则上传会失败
内容的提问来源于stack exchange,提问作者hanguyen
相关产品推荐
相关产品推荐

