我需要上传文件,处理它,然后在同一个POST请求中下载已处理的文件。
我没有找到很多关于Web API的文档来满足我的要求,所以我想出了一个基于网上不同帖子的解决方案。
我的最终解决方案如下:
public HttpResponseMessage PostFile(string fileName)
{
try
{
var task = Request.Content.ReadAsStreamAsync();
task.Wait();
var requestStream = task.Result;
var tempFile = System.Web.HttpContext.Current.Server.MapPath(string.Format("~/App_Data/{0}", fileName));
var steam = File.Create(tempFile);
requestStream.CopyTo(steam);
steam.Close();
requestStream.Close();
var modifiedStream = DoStuffToFile(tempFile);
var response = new HttpResponseMessage();
response.Content = new StreamContent(modifiedStream);
response.StatusCode = HttpStatusCode.Created;
return response;
}
catch
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
}
由于我没有Web API的经验,我想知道这段代码是否正常, 或者如果我遇到问题?
修改
代码按预期工作。我只是不确定它是否会导致任何问题或副作用,因为我忘了做一些可能被Web API考虑的事情。或者我可以发布一个文件并发回另一个文件并回复吗?
代码也被简化以保持紧凑(不检查重复文件,不清除旧文件等)