如何通过HttpHandler使用发布的文件?

时间:2011-09-23 16:49:39

标签: c# asp.net forms http-post httphandler

我构建了一个方法,该方法接收本地文件并将其发布到取自the 2nd answer here.的远程站点

在远程站点上,我有我的HttpHandler,但不知道文件字节在哪里,所以我可以将它保存在远程机器上的某个地方。

有人可以帮我解决如何在HttpHandler中使用该文件进行处理吗?我尝试了下面但Request.Files是空的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Specialized;

namespace Somewhere
{
    public class UploadFileHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            //VALIDATE FILES IN REQUEST
            if (context.Request.Files.Count > 0)
            {
                //HANDLE EACH FILE IN THE REQUEST
                foreach (HttpPostedFile item in context.Request.Files)
                {
                    item.SaveAs(context.Server.MapPath("~/Temp/" + item.FileName));
                    context.Response.Write("File uploaded");
                }
            }
            else
            {
                //NO FILES IN REQUEST TO HANDLE
                context.Response.Write("No file uploaded");
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

从上下文中获取HttpRequest,并使用Files属性获取HttpPostedFile个对象的集合。然后,您可以从HttpPostedFile.InputStream访问数据(名称,长度和MIME类型还有其他属性)。

编辑:既然已经编辑了问题以表明您已经在使用Files属性,我强烈怀疑您正在查看错误的HTTP请求,或者您的方式有问题重新提出要求。我建议您使用Wireshark查看网络级别发生的情况 - 这样您就可以检查您的请求确实中是否包含文件数据。