如何使用 restsharp 上传多个文件?
How to upload multiple files with restsharp?
我想上传文件到这个apihttps://support.crowdin.com/api/add-file/
如何使用 RestSharp 创建一个名为 files
的参数并向其添加多个文件?
到目前为止我已经写了这段代码,但它不起作用,RestSharp 似乎没有按预期上传文件。
var addUrl = new Uri($"https://api.crowdin.com/api/project/{projectIdentifier}/add-file?key={projectKey}&json=");
var restClient = new RestSharp.RestClient("https://api.crowdin.com");
var request = new RestSharp.RestRequest($"api/project/{projectIdentifier}/add-file", RestSharp.Method.POST);
request.AlwaysMultipartFormData = true;
request.AddQueryParameter("key", projectKey);
request.AddQueryParameter("json", "");
var files = new Dictionary<string, byte[]>
{
{ "testfile", File.ReadAllBytes(fileName) }
};
request.AddParameter("files", files, RestSharp.ParameterType.RequestBody);
var restResponse = restClient.Execute(request);
这给了我
{
"success":false,
"error":{
"code":4,
"message":"No files specified in request"
}
}
@SirRufo 在评论中提到了解决方案,但没有post作为解决方案,所以我会在这里解释一下。
httpPOST方法其实没有数组的概念。
在字段名称中使用方括号只是一种约定。
此示例代码有效:
var restClient = new RestSharp.RestClient("https://api.crowdin.com");
var request = new RestSharp.RestRequest($"api/project/{projectIdentifier}/add-file", RestSharp.Method.POST);
request.AlwaysMultipartFormData = true;
request.AddHeader("Content-Type", "multipart/form-data");
request.AddQueryParameter("key", projectKey);
request.AddQueryParameter("json", "");
request.AddFile("files[testfile1.pot]", fileName);
request.AddFile("files[testfile2.pot]", fileName);
// Just Execute(...) is missing ...
无需嵌套自定义参数或任何类似的复杂内容。
添加具有这种 "special" 名称格式的文件就可以了。
我的错误是认为 files[filenamehere.txt]
部分暗示了比实际需要更复杂的 POST 主体。
我想上传文件到这个apihttps://support.crowdin.com/api/add-file/
如何使用 RestSharp 创建一个名为 files
的参数并向其添加多个文件?
到目前为止我已经写了这段代码,但它不起作用,RestSharp 似乎没有按预期上传文件。
var addUrl = new Uri($"https://api.crowdin.com/api/project/{projectIdentifier}/add-file?key={projectKey}&json=");
var restClient = new RestSharp.RestClient("https://api.crowdin.com");
var request = new RestSharp.RestRequest($"api/project/{projectIdentifier}/add-file", RestSharp.Method.POST);
request.AlwaysMultipartFormData = true;
request.AddQueryParameter("key", projectKey);
request.AddQueryParameter("json", "");
var files = new Dictionary<string, byte[]>
{
{ "testfile", File.ReadAllBytes(fileName) }
};
request.AddParameter("files", files, RestSharp.ParameterType.RequestBody);
var restResponse = restClient.Execute(request);
这给了我
{
"success":false,
"error":{
"code":4,
"message":"No files specified in request"
}
}
@SirRufo 在评论中提到了解决方案,但没有post作为解决方案,所以我会在这里解释一下。
httpPOST方法其实没有数组的概念。 在字段名称中使用方括号只是一种约定。
此示例代码有效:
var restClient = new RestSharp.RestClient("https://api.crowdin.com");
var request = new RestSharp.RestRequest($"api/project/{projectIdentifier}/add-file", RestSharp.Method.POST);
request.AlwaysMultipartFormData = true;
request.AddHeader("Content-Type", "multipart/form-data");
request.AddQueryParameter("key", projectKey);
request.AddQueryParameter("json", "");
request.AddFile("files[testfile1.pot]", fileName);
request.AddFile("files[testfile2.pot]", fileName);
// Just Execute(...) is missing ...
无需嵌套自定义参数或任何类似的复杂内容。 添加具有这种 "special" 名称格式的文件就可以了。
我的错误是认为 files[filenamehere.txt]
部分暗示了比实际需要更复杂的 POST 主体。