使用八位字节流向HttpClient上传二进制文件

时间:2019-06-27 14:42:15

标签: c# file upload binary

我正在尝试使用httpClient作为八位字节流上传文件

  1. 提供了以下文档
  2. HTTP动词=> POST
  3. Content–Type => application / octet-stream
  4. 接受=> application / json
  5. 授权=>承载{访问令牌}
  6. x文件名=>测试文件.pdf
  7. x-convert-document(可选)=> true
  8. x-source =>源(可以是任何字符串)
  9. 请求正文=>文件(二进制流)

旁注:在我的代码中,Accept和Bearer标头及其值已经存在于要通过“ await GetRestClientAsync()”获取的客户端中

我希望得到答复,但是现在我什么也没回来,应用程序停止了,我在这里做错了什么?

Ps:其他帖子,对此api的请求在我在这里使用的同一客户端上也能正常工作,因此我很可能将MultiPartFormDataContent弄乱了

 protected async Task<TResponse> ExecutePostAsBinaryCustomHeadersAsync<TResponse>(Uri apiUri, Stream fileStream, string fileName ,bool returnDefaultObjectForInternalServerError = false)
    {
        using (var formData = new MultipartFormDataContent())
        {
            formData.Add(new StringContent(fileName), "x-file-name");
            formData.Add(new StringContent("true"), "x-convert-document");
            formData.Add(new StringContent("Agion"), "x-source");
            formData.Add(new StringContent("application/octet-stream"), "Content-Type");

            using (var client = await GetRestClientAsync())
            {
                StreamContent content = new StreamContent(fileStream);
                formData.Add(content, "file", fileName);

                using (var response = await client.PostAsync(apiUri, formData))
                {

                    return await DeserializeResponseAsync<TResponse>(response, returnDefaultObjectForInternalServerError); 
                }

            }
        }
    }

0 个答案:

没有答案