Я начинаю работать с загрузкой файлов в C# Web Api, в настоящее время цель состоит в том, чтобы получить файл из Form-Param с именем metaData , именно так файл обрабатывается внутри контроллера.
[HttpPost, Route("{applicationId}/Files"), ResponseType(typeof(List<int>))]
[MimeMultiart]
public async Task<IHttpActionResult> CustomerApplicationFile(int applicationId)
{
try
{
// Get Data from form data.
var stream = HttpContext.Current.Request.GetBufferedInputStream();
new StreamReader(stream).ReadToEnd();
var files = HttpContext.Current.Request.Files;
var metaData = HttpContext.Current.Request.Form["metaData"];
// Create MultipartFormDataContent
var requestContent = new MultipartFormDataContent
{
{
new StringContent(metaData), "metaData"
}
};
for (int i = 0; i < files.Count; i++)
{
var key = files.AllKeys[i];
requestContent.Add(new StreamContent(files[i].InputStream), key, files[i].FileName);
}
// Get session key
var sessionKey = await Uow.Users.GetSessionKey(GetUserId());
string uri = string.Format(Constants.CustomerApplicationFiles, applicationId);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("sessionKey", sessionKey);
var response =
await client.PostAsync(AppSettings.ApiUrl + uri, requestContent);
return ResponseMessage(response);
}
}
catch (BusinessEntityException ex)
{
Logger.Warn(ex);
return this.BadRequest(ex);
}
catch (SqlException ex)
{
Logger.Fatal(ex);
return this.InternalServerError(AppError.ServerSqlNotFound);
}
catch (Exception ex)
{
Logger.Fatal(ex);
return this.InternalServerError(AppError.InternalErrorServer);
}
}
Однако я продолжаю получать следующее сообщение, в котором говорится, что параметр равен нулю ... но я отправляю, как показано на этом .
"exceptionType": "System.ArgumentNullException", "message": "Значение не может быть нулевым. \ r \ nParameter name: content", "stackTrace": "at System. Net .Http.StringContent.GetContentByteArray (String content , Encoding encoding) \ r \ n в System. Net .Http.StringContent..ctor (содержимое строки, кодировка кодировки, String mediaType)