我需要上传一个 File ,处理它,然后在同一个 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 可能会考虑的事情。或者我可以发布一个文件并在回复中发送另一个文件吗?
代码也被简化以保持紧凑(不检查重复文件,不清理旧文件等)