WebService C# - httpost avec fichier et json dans le body ?
Bonjour,
est-il possible de passer un fichier et un json dans le body en c# ?
si oui comment ?
j'ai essayé ca :
voici un extrait de mon controller
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public class CodifBOMModelController : ApiController
{
private IModelService _modelServiceInstance = null;
public CodifBOMModelController() : this(new ModelService())
{
}
public CodifBOMModelController(IModelService service)
{
_modelServiceInstance = service;
}
[HttpPost]
[Route("api/CodifBOM/Model/UtiliserModel")]
public async Task<IHttpActionResult> GetFichierTransformerAsync([FromBody] ModelViewModel model)
{
try
{
HttpRequestMessage request = this.Request;
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType));
}
//a tester
var rawMessage = await request.Content.ReadAsStringAsync();
request.Content.LoadIntoBufferAsync().Wait();
var filesProvider = await request.Content.ReadAsMultipartAsync();
var fileContents = filesProvider.Contents.FirstOrDefault();
if (fileContents == null)
{
return this.BadRequest("Fichier Manquant");
}
string cheminFichierTemp = Path.GetTempFileName();
FileStream fstream = new FileStream(cheminFichierTemp, FileMode.Create);
Stream content = await fileContents.ReadAsStreamAsync();
ViewModelBase<ModelViewModel> result = new ViewModelBase<ModelViewModel>();
return this.Ok(_modelServiceInstance.CreeFichierAPartirDuModel(model, content));
}
catch (Exception e)
{
throw new JSONException("GET_CORRESPONDANCE_MODEL", "Erreur lors de la récupération des Models", e);
}
}
}
} |
J'ai plusieurs problèmes.
1- je ne sais pas si cela est possible
2- je ne sais pas comment tester avec postman pour envoyer un fichier et des données
...
Précédemment je passais un json dans l'URL mais il semble qu'il y ait une limite de caractères en utilisant cette méthode (limite que j'ai dépassé. (~2200))
Cdt