Как читать данные из WebClient.UploadData
Первое размещение! Я ломал голову над этим конкретным делом. У меня есть веб-приложение, которое должно загрузить файл в web-api и получить обратно файл SVG (в виде строки).
Веб-приложение загружает файл следующим образом:
using (var client = new WebClient())
{
var response = client.UploadFile(apiUrl, FileIGotEarlierInMyCode);
ViewBag.MessageTest = response.ToString();
}
Выше работает, но потом мы перейдем к API Part: Как получить доступ к загруженному файлу? псевдокод:
public string Post([FromBody]File f)
{
File uploadedFile = f;
String svgString = ConvertDataToSVG(uploadedFile);
return s;
}
Другими словами: как я могу загрузить / отправить XML-файл в мой Web-API, использовать / манипулировать им и отправить другие данные обратно?
Заранее спасибо! Ник
PS: я попробовал этот ответ: Доступ к точным данным, отправленным с использованием WebClient.UploadData на сервере, но мой код не скомпилирован на Request.InputStream.
1 ответ
Причина, по которой Request.InputStream не работает для вас, заключается в том, что свойство Request может ссылаться на различные типы объектов Request, в зависимости от того, какое решение ASP.NET вы разрабатываете. Есть:
- HttpRequest, доступный в веб-формах,
- HttpRequestBase, доступный в контроллерах MVC
- HttpRequestMessage, доступный в контроллерах Web API.
Вы используете Web API, поэтому HttpRequestMessage это так. Вот как вы читаете необработанные байты запроса, используя этот класс:
var data = Request.Content.ReadAsByteArrayAsync().Result;