Versuchen Sie, eine einfache HttpResponseMessage verwenden, mit einem StreamContent nach innen zu erhalten, Download-Datei
public HttpResponseMessage Get()
{
var path = @"C:\Temp\file.zip";
var result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(path, FileMode.Open);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "file.zip"
};
return result;
}
und für POST, laden Datei
public Task<HttpResponseMessage> Post()
{
HttpRequestMessage request = this.Request;
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = new MultipartFormDataStreamProvider("C:\Temp");
var task = request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(o =>
{
string file1 = provider.BodyPartFileNames.First().Value;
// this is the file name on the server where the file was saved
return new HttpResponseMessage()
{
Content = new StringContent("File uploaded.")
};
}
);
return task;
}
Wenn Sie eine Binärdatei benötigen, warum sollten Sie sich darauf beschränken, nur JSON zuzulassen? WebApi unterstützt mehrere Möglichkeiten zum Lesen von Binärdateien, entweder über multipart oder einen rohen Byte-Stream. –