如何通过 HttpHandler 使用已发布的文件?
我构建了一种方法,该方法采用本地文件并将其发布到从 这里是第二个答案。
在远程站点上,我有我的 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;
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从上下文中获取
HttpRequest
,并使用Files
属性来获取HttpPostedFile
对象。然后,您可以从HttpPostedFile.InputStream 访问数据
(还有名称、长度和 MIME 类型的其他属性)。编辑:现在问题已被编辑以表明您已经在使用
Files
属性,我强烈怀疑您正在查看错误的 HTTP 请求,或者您的方式有问题重新提出请求。我建议您使用 Wireshark 来查看网络级别发生的情况 - 这样您就可以检查您的请求是否真的< /em> 中有文件数据。Get hold of the
HttpRequest
from the context, and use theFiles
property to get a collection ofHttpPostedFile
objects. You can then access the data fromHttpPostedFile.InputStream
(there are other properties for the name, length and MIME type).EDIT: Now that the question's been edited to show that you're already using the
Files
property, I strongly suspect that you're looking at the wrong HTTP request, or that there's something wrong with how you're making the request. I suggest you use Wireshark to see what's happening at the network level - that way you can check that your request really has the file data in it.