我很清楚如何使用标准的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 );
}
}
任何建议都非常感谢。
答案 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!页面上提到了其他一些内容。