1

我需要上传一个 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 可能会考虑的事情。或者我可以发布一个文件并在回复中发送另一个文件吗?

代码也被简化以保持紧凑(不检查重复文件,不清理旧文件等)

4

0 回答 0