Я пытаюсь загрузить файл с содержимым тела. Есть PostMultipartAsync
единственный способ?Как загрузить файл и сформировать данные с помощью Flurl?
На мой C# код серверной я это:
var resource = FormBind<StorageFileResource>();
var file = Request.Files.First().ToPostedFile();
FormBind
считывает данные из запроса и заполняет объект.
Используя PostMultipartAsync
Я знаю, он должен начать так:
.PostMultipartAsync((mp) => { mp.AddFile(name, stream, name)})
, но я не могу понять, как добавить объект. У вас есть идеи по этому поводу?
Это моя текущая попытка:
public static async Task<T> PostFileAsync<T>(string url, object data, string name, Stream stream, object queryString = null)
where T : class
{
return await HandleRequest(async() => queryString != null
? await url
.SetQueryParams(queryString)
.SetClaimsToken()
.PostMultipartAsync((mp) => { mp.AddFile(name, stream, name)})
.ReceiveJson<T>()
: await url
.SetClaimsToken()
.PostMultipartAsync((mp) => mp.AddFile(name, stream, name))
.ReceiveJson<T>());
}
Текущий запрос делается на переднем конце:
ли 'ToPostedFile' возвращал [System.Web.HttpPostedFile] (https://msdn.microsoft .com/EN-US/библиотека/system.web.httppostedfile.aspx)? Кроме того, что такое «ресурс» и как он здесь имеет значение? 'файл' должен содержать все, что вы хотите опубликовать, нет? –
Кроме того, в отношении «это единственный способ» загрузить файл с Flurl: Технически нет, но API или веб-сервис, который вы вызываете, должен определять формат, который он требует, будь то «multipart/form-data» или что-то еще , Это важная часть, чтобы узнать в первую очередь. –
@ToddMenier Привет Тодд, в отношении первого вопроса, нет, это локальный класс. Я читал из списка «HttpFile». Ресурс - это мой класс ViewModel, я привязываю только поля запроса к этому классу, цель здесь - показать, что я читаю другие поля отдельно. Что касается 3-й части, это API, который требует «multipart/form-data», пожалуйста, проверьте мой обновленный ответ, чтобы узнать, как это делается сегодня, используя интерфейс. – eestein