我遇到的问题是从
获取文件信息而不使用<input type=file>
<input type=file>
进入代码隐藏方法。当我尝试使用
获取信息时,文件总是在后面的代码中返回null,我相信这是因为它实际上从未被发送到服务器。 <form>
无论如何都要在不使用<form>
的情况下将文件信息发送到服务器?
这是我正在使用的html
Request.Files
这是背后的代码
Request.Files
<form>
<form>
由于网页的设置方式,我无法使用
,只会在IE(甚至是IE9)中导致一些可怕的格式问题,我无法在css中修复。此外,我使用<input type="file" id="upload_file" name="upload_file" runat="server" accept="image/*" onchange="copyFile()" />
<input type="file" id="upload_file" name="upload_file" runat="server" accept="image/*" onchange="copyFile()" />
而不是 HttpPostedFile file = Request.Files["upload_file"];
,以便我可以访问
事件。 if (file != null && file.ContentLength > 0)
{
string fname = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
}
修改<!/强>
在网站中隐藏的母版页是一个已经添加了runat =“server”的表单。很抱歉没有提到这个,我刚刚发现在尝试将runat =“server”添加到我正在尝试创建的新表单时
任何帮助将不胜感激!谢谢!
修改<!/强>
最终代码
感谢@bkwint和@TrizZz,没有你的帮助,我仍然会想到这一点。
html部分
if (file != null && file.ContentLength > 0)
{
string fname = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
}
将onchange中添加到asp:FileUpload
的代码
以及保存文件的代码
<form>
允许我使用添加到asp:FileUpload的onchange在提交母版页中使用表单的javascript。 id'aspnetForm'是母版页中的表单。
<form>
从我通过更多的研究中学到的是,可能导致css不满意的原因以及不能正确提交的形式是因为嵌套形式很糟糕。由于在母版页上有一个我不知道的表单,当我添加另一个表单时,网页只是忽略了我添加的那个。通过调用母版页上的提交,上传的文件被正确推送到服务器。
再次感谢所有回复/评论和帮助的人!
注意
这可能不适用于IE,具体取决于您的设置方式。当您尝试直接从fileupload提交表单时,IE不喜欢它。
答案 0 :(得分:2)
你需要一个表单来使用表单控件..我知道你说你有一些CSS问题,但是如果它导致问题,你将能够处理你的CSS。
HttmpPostedFile仅在提交时发布,这就是为什么你得到一个NULL文件。获取post方法需要表单。文件仅在发布期间发送,您需要执行此操作:
<form action="yourPage.aspx" method="post">
<input type="file" onchange="this.form.submit()" name="upload_file" id="upload_file"/>
</form>
在yourPage.aspx的加载事件中:
HttpPostedFile file = Request.Files["upload_file"];
if (file != null && file.ContentLength > 0)
{
string fname = Path.GetFileName(file.FileName);
file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
}
使用这种方法,你应该没有问题,当然除了你的CSS
答案 1 :(得分:1)
您的文件输入应放在表单内。据我所知,没有办法将其保留在表格标签之外,仍然可以发送数据....
至于使用标记而不是点网络FileUpload标记的原因。你为什么不在后端发布onchange javascript。
所以像这样定义你的标签
<asp:FileUpload ID="FlUpld_x" runat="server" OnLoad="FlUpld_x_OnLoad" />
并像这样定义你的代码
protected void FlUpld_x_OnLoad(object sender, EventArgs e)
{
((FileUpload)sender).Attributes.Add("onchange", "js_function();");
}