如何使用.NET从ASP.NET网站外部的网页捕获文件上载数据

时间:2010-08-04 13:32:40

标签: c# asp.net web-applications

我很清楚如何使用标准的ASP.NET技术从客户端到服务器获取文件,但是,我需要能够从用基本的html和进程编写的第三方网页中检索数据asp.net Web应用程序中的文件数据。

所以如果基本的html看起来像这样......

<form id="form1" action="WebForm.aspx" method="post">

        <input name="fileUpload1" type="file" enctype="multipart/form-data" />

        <input type="submit" value="click" />

    </form>

如何在表单的action属性中引用的页面中检索文件数据。到目前为止,我已经尝试了下面的代码,它允许我访问文件名 - 但不是文件的字节流。

protected void Page_Load( object sender, EventArgs e )
        {
            string fileName = Request.Form["fileUpload1"];

            // No files appear in the request.files collection in code below.

            foreach (string file in Request.Files)
            {
                HttpPostedFile hpf = Request.Files[file] as HttpPostedFile;
                if (hpf.ContentLength == 0)
                    continue;
                string savedFileName = Path.Combine(
                   AppDomain.CurrentDomain.BaseDirectory,
                   Path.GetFileName( hpf.FileName ) );
                hpf.SaveAs( savedFileName );
            }
        }

任何建议都非常感谢。

3 个答案:

答案 0 :(得分:5)

您的表单不正确。 enctype参数应位于form代码:

<form id="form1" action="WebForm.aspx" method="post" enctype="multipart/form-data">
    <input name="fileUpload1" type="file" />
    <input type="submit" value="click" />
</form>

答案 1 :(得分:0)

如果您在Page_Load代码期间尝试从远程(第三方)服务器检索文件或资源,则无需使用文件上载表单。

请改为尝试:

protected void Page_Load(object sender, EventArgs e) {

    using(WebClient client = new WebClient()) {
        var html = client.DownloadString("http://www.google.com/");
        File.WriteAllText("filename", html);
    }
}

答案 2 :(得分:0)

由于这不是ASP.NET表单而您无法控制它,因此您需要使用第三方组件,如Softartisans FileUp。我相信还有其他类似的控件。 Learn More about Uploading Files!页面上提到了其他一些内容。