Ich bin neu in ApiControllers und testen beim Senden einer Datei vom Client an die API und speichern sie von hier aus. Der folgende Code funktioniert und die Datei wird vom Client auf den Server "kopiert", aber die Antwort lautet: "204 Kein Inhalt" - Sollte ich mich hier hüten?Eine Datei an einen ApiController senden
Der ApiController Code ist dies:
[HttpPost]
[Route("api/UploadFile")]
public async Task UploadFile()
{
string fileName = "myfilename.txt";
Stream requestStream = await Request.Content.ReadAsStreamAsync();
using (FileStream fileStream = File.Create(@"C:\myDropFolder\" + fileName))
{
await requestStream.CopyToAsync(fileStream);
}
}
Und der Anruf an den Client wie folgt aussieht, von einer Konsole-Anwendung zu testen:
class Program
{
static void Main(string[] args)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost:1741/api/UploadFile/");
request.Method = WebRequestMethods.Http.Post;
byte[] fileToSend = File.ReadAllBytes(@"C:\myDropFolder\tester.txt");
request.ContentLength = fileToSend.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Send the file as body request.
requestStream.Write(fileToSend, 0, fileToSend.Length);
requestStream.Close();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
Console.WriteLine("HTTP/{0} {1} {2}", response.ProtocolVersion, (int)response.StatusCode, response.StatusDescription);
Console.ReadLine();
}
catch (Exception)
{
throw;
}
}
}
Vielen Dank für die Erklärung Arin! – micknt