ASP.NET Web API HTTPRequestMessage与CLR对象上传文件

时间:2014-08-22 06:15:33

标签: asp.net-mvc rest asp.net-web-api

我想使用带有安全令牌的ASP.NET Web API将文件上传到服务器,并在HTTPRequestMessage中嵌入CLR对象。

我可以使用带有多部分内容类型的Web API Async找到POST文件的解决方案,但是没有使用带标头令牌的自定义HTTP请求消息上传的解决方案......

我正在使用以下代码

    public HttpResponseMessage UploadImportFile()
    {
        List<string> FileIdentifiers = new List<string>();

        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = ImportFileDirectory;
        MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(root);

        try
        {
            // Read the form data.
            Request.Content.ReadAsMultipartAsync(provider);

            foreach (MultipartFileData file in provider.FileData)
            {
                FileIdentifiers.Add(file.LocalFileName.Replace(root, "").Replace("BodyPart_", ""));
            }
            return Request.CreateResponse(HttpStatusCode.OK, new FileUploadResponseType(Ackowledgememt.Success, UtcDateTime.Now, null, version, FileIdentifiers));
        }
        catch (System.Exception e)
        {
            log.Error(e);
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }

1 个答案:

答案 0 :(得分:0)

有很多方法可以在Web API中实现它。如果要在HTTP标头中传递安全性令牌,那么一个好的候选者就是实现一个添加到上传文件操作的授权过滤器;过滤器将通过查看请求消息头来验证安全令牌;如果验证成功,请求将流过;否则,过滤器可以抛出异常(例如HttpResponseException),以便拒绝请求。