Как я могу опубликовать файл в веб-API из C #? - PullRequest
0 голосов
/ 20 мая 2019

Мне нужно опубликовать файл из приложения asp в API файл будет загружен через <asp:FileUpload />

в конце я получу файл и отправлю его в метод веб-API

метод веб-API будет содержать код

        var root = HttpContext.Current.Server.MapPath("~/App_Data/Uploadfiles");
        var provider = new MultipartFormDataStreamProvider(root);
        var result = await Request.Content.ReadAsMultipartAsync(provider);

на странице asp будет код

   using (System.IO.Stream fs = fuID.PostedFile.InputStream)
        {
            System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);
            string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
            using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), "http://localhost:5000/path"))
                {
                    request.Headers.TryAddWithoutValidation("Accept", "application/json, text/plain, */*");
                    request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + AppUserContext.Token);
                    request.Headers.TryAddWithoutValidation("x-language", "ar");
                    // Iam Not Sure of this line
                    request.Content = new StringContent("Content-Disposition:" + base64String, Encoding.UTF8, "multipart/form-data");

                    var response = httpClient.SendAsync(request).Result;
                }
            }
        }

Мне нужно знать, как я могу отправить файл в теле запроса, что написать в этой строке

request.Content = new StringContent("Content-Disposition:" + base64String, Encoding.UTF8, "multipart/form-data");

1 Ответ

1 голос
/ 21 мая 2019

pf - опубликованный файл

, затем используйте

 using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AppUserContext.Token);
                client.DefaultRequestHeaders.Add("x-language", "ar");
                using (var stream = pf.InputStream)
                {
                    var content = new MultipartFormDataContent();
                    var file_content = new ByteArrayContent(new StreamContent(stream).ReadAsByteArrayAsync().Result);
                    file_content.Headers.ContentType = new MediaTypeHeaderValue(pf.ContentType);

                    file_content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
                    {
                        FileName = JsonConvert.SerializeObject(pf.FileName),

                    };
                    content.Add(file_content);
                    var url = "URL Here";
                    var response = client.PostAsync(url, content).Result;
                    response.EnsureSuccessStatusCode();
                }
            }
...