RestRequest.AddFileBytes 发布损坏的文件

Chr*_*ris 1 restsharp

我正在尝试使用 RestRequest.AddFileBytes 将图像文件发布到服务,但是当我这样做时,文件似乎已损坏。当我下载回来时,文件大小稍有偏差,并且根据文件类型,它可能看起来有错误的扩展名或无法解释(大概是因为标头混乱了)

当我尝试用 Postman 做同样的事情时,它的文件没问题,所以这似乎与我发布文件的方式有关。请指教!

private static bool AddPageBytes(string user, string password, string documentId, string fileName, string contentType, byte[] bytes)
        {
            System.Console.WriteLine($"AddPageBytes documentId:{documentId}  fileName:{fileName} contentType:{contentType} bytes:{bytes.Length}");
            var client = new RestClient(BASE_URL);
            var request = new RestRequest("v1/document/{id}/page", Method.POST);

            request.AddUrlSegment("id", documentId);

            request.AddHeader("X-IntegrationServer-Username", user);
            request.AddHeader("X-IntegrationServer-Password", password);
            request.AddHeader("Content-Type", "application/octet-stream");

            request.AddHeader("X-IntegrationServer-FileSize", bytes.Length.ToString());

            request.AddHeader("X-IntegrationServer-Resource-Name", fileName);
            request.AddFileBytes(fileName, bytes, fileName, contentType);


            var response = client.Execute(request);

            return response.IsSuccessful;

        }
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 7

你难道不知道吗,就像发条一样,我在两天的大部分时间里敲着头,然后发布了这个问题,几乎立即就想出了如何让它发挥作用。我不会留下来,我知道为什么一个是正确的,而一个只是大部分正确(这显然不够好),但是

我只需要改变

request.AddFileBytes(fileName, bytes, fileName, contentType);
Run Code Online (Sandbox Code Playgroud)

request.AddParameter(contentType, bytes, ParameterType.RequestBody);
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴知道我的一个 stackoverflow 独白曾经帮助过某人:) (3认同)