如何在 ASP.net 中处理从桌面应用程序上传的文件?

发布于 2024-11-04 02:58:25 字数 350 浏览 1 评论 0原文

我正在使用 WebClient.UploadFile 将文件上传到这种 URL - http:// example.com/file.aspx 通过 HTTP POST 方法。

如何获取该文件并将其保存到服务器上的特定位置?我应该在 file.aspx 中编写什么代码来执行此操作?

当我搜索时,所有示例都假设我使用文件上传控件。但是在 ASP.Net 中如何获取并保存通过 HTTP POST 发送的文件?

我使用的是 C#,所以 C# 代码示例会很棒。但我没有将 VB 转换为 C# 的问题。

I am using WebClient.UploadFile to upload a file to this kind of URL - http://example.com/file.aspx via HTTP POST method.

How can I get that file and save it to a sepecific location on the server? What code should I write inside file.aspx to do this?

When I search, all examples assume I use the file upload control. But how can I get and save a file sent via HTTP POST generally in ASP.Net?

I am using C#, so C# code example will be great. But I have no probs converting VB to C#.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧故 2024-11-11 02:58:25

在服务器端页面(顺便说一句,应该是 ASHX 而不是 ASPX)中,使用 Request.Files 集合。

例如,您可以编写 Request.Files[0].SaveAs(Server.MapPath("~/Something"))

In the server-side page (which, BTW, ought to be an ASHX rather than an ASPX), use the Request.Files collection.

For example, you can write Request.Files[0].SaveAs(Server.MapPath("~/Something"))

永不分离 2024-11-11 02:58:25

我相信您应该会发现这篇 MSDN 文章适合您的需求。 WebClient.UploadFile 方法
您可以看到如何使用 page_load 来处理嵌入在来自 webclient 的 http 请求中的文件。

void Page_Load(object sender, EventArgs e) {

    foreach(string f in Request.Files.AllKeys) {
        HttpPostedFile file = Request.Files[f];
        file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName);

    }   
}

在查看了 @SLaks 的评论后,我同意使用 .ashx 将是一个“更好”的结果。代码应该类似于:

<%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Web;

    public class Handler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {

            foreach(string f in context.Request.Files.AllKeys) 
            {
               HttpPostedFile file = context.Request.Files[f];
               file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName);
             // alternatively:
             file.SaveAs(Path.Combine(Server.MapPath(@"\StorageFolder\",file.FileName);
             //thanks @SLaks.
            }
         }
     } 

I believe you should find this MSDN article suitable to your needs. WebClient.UploadFile Method
You can see how the page_load is used to handle the file that is embedded in the http request from thew webclient

void Page_Load(object sender, EventArgs e) {

    foreach(string f in Request.Files.AllKeys) {
        HttpPostedFile file = Request.Files[f];
        file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName);

    }   
}

After reviewing comment from @SLaks I would agree that using a .ashx would be a 'better' result. The code should look something like:

<%@ WebHandler Language="C#" Class="Handler" %>

    using System;
    using System.Web;

    public class Handler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {

            foreach(string f in context.Request.Files.AllKeys) 
            {
               HttpPostedFile file = context.Request.Files[f];
               file.SaveAs("c:\\inetpub\\test\\UploadedFiles\\" + file.FileName);
             // alternatively:
             file.SaveAs(Path.Combine(Server.MapPath(@"\StorageFolder\",file.FileName);
             //thanks @SLaks.
            }
         }
     } 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文