提问者:小点点

使用C#、RestSharp、Redmine API通过POST调用上传文件


RestClient client = new RestClient("http://myclient/redmine/");
client.Authenticator = new HttpBasicAuthenticator("myuser", "mypsw");
var request2 = new RestRequest("uploads.json", Method.POST);
request2.AddHeader("Content-Type", "application/octet-stream");
request2.RequestFormat = RestSharp.DataFormat.Json;
byte[] dataToSend = File.ReadAllBytes(AddIssue.attach.Text);
request2.AddBody(dataToSend);
IRestResponse response2 = client.Execute(request2);
resultbox.Text = response2.Content;

共1个答案

匿名用户

正如我在评论中提到的,听起来Redmine可能有类似于Dropbox的需求。以下是对我有效的解决方案(基于使用Restsharp PCL上载到dropbox的问题):

public static void UploadFileToDropbox(string filePath)
{
    RestClient client = new RestClient("https://api-content.dropbox.com/1/");
    IRestRequest request = new RestRequest("files_put/auto/{path}", Method.PUT);

    FileInfo fileInfo = new FileInfo(filePath);
    long fileLength = fileInfo.Length;

    request.AddHeader("Authorization", "Bearer INSERT_DEVELOPER_TOKEN_HERE");
    request.AddHeader("Content-Length", fileLength.ToString());

    request.AddUrlSegment("path", string.Format("Public/{0}", fileInfo.Name));

    byte[] data = File.ReadAllBytes(filePath);
    var body = new Parameter
    {
        Name = "file",
        Value = data,
        Type = ParameterType.RequestBody,
    };
    request.Parameters.Add(body);

    IRestResponse response = client.Execute(request);
} 

也作为要旨发表。

我知道这不是你的确切情况,但希望它能给你一些想法。