Desidero caricare un file e inviare insieme al file alcune informazioni aggiuntive, ad esempio una stringa pippo e una barra int.Metodo WebAPI che richiede un caricamento di file e argomenti aggiuntivi
Come scrivere un metodo di controllo WebAPI ASP.NET che riceve un caricamento di file, una stringa e un int?
mio JavaScript:
var fileInput = document.querySelector("#filePicker");
var formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("foo", "hello world!");
formData.append("bar", 42);
var options = {
url: "/api/foo/upload",
data: formData,
processData: false // Prevents JQuery from transforming the data into a query string
};
$.ajax(options);
mio regolatore WebAPI può accedere al file in questo modo:
public async Task<HttpResponseMessage> Upload()
{
var streamProvider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(streamProvider);
var fileStream = await streamProvider.Contents[0].ReadAsStreamAsync();
}
Ma non è chiaro per me come posso ottenere la mia corda e il mio int. Immagino di poter probabilmente dire streamProvider.Content [1], o qualsiasi altra cosa, ma questo mi sembra super cattivo.
Qual è il modo giusto © per scrivere un'azione WebAPI che accetta un caricamento di file, una stringa e un int?
Sono probabilmente manca qualcosa ... Perché non puoi semplicemente fare foo e bar parametri del tuo metodo di caricamento e lasciare che il legame la magia accade? – Scrappydog
Mi sono concentrato sul laser per inviare i dati all'interno di FormData (ad es. Come i dati all'interno di $ .post (url, formData), il modello non li troverebbe mai.Esso, posso postare il file come solo i dati del modulo, quindi metti gli altri argomenti nell'URL, quindi il modello legatore fa la sua magia –