ASP.NET中的HTML文件上载:HttpPostedFile属性为空

ASP.NET中的HTML文件上载:HttpPostedFile属性为空,asp.net,html,file-upload,Asp.net,Html,File Upload,在我的ASP.NET web表单中,我试图自定义我的文件上载面板。我所做的只是简单地放置一个HTML输入按钮和一个文本框。还有一个隐藏的HTML文件上传控件。当用户单击按钮时,会出现文件选择窗口,当用户选择文件时,该值会写入可见文本框 到目前为止一切都很好。但我在尝试将所选文件附加到代码页中的电子邮件时遇到问题 以下是HTML标记: <asp:ImageButton ID="clickme" runat="server" ImageUrl="Images/browse.png" OnCli

在我的ASP.NET web表单中,我试图自定义我的文件上载面板。我所做的只是简单地放置一个HTML输入按钮和一个文本框。还有一个隐藏的HTML文件上传控件。当用户单击按钮时,会出现文件选择窗口,当用户选择文件时,该值会写入可见文本框

到目前为止一切都很好。但我在尝试将所选文件附加到代码页中的电子邮件时遇到问题

以下是HTML标记:

<asp:ImageButton ID="clickme" runat="server" ImageUrl="Images/browse.png" OnClientClick="$('#uploadme').click(); return false;" />
<input id="uploadme" name="uploadme" type="file" style="visibility: hidden;" onchange="CopyMe(this, 'txtFileName');" />
<input id="txtFileName" type="text" name="txtFileName" readonly="readonly" class="file-path" />
我在.cs文件中使用以下代码来获取文件属性:

HttpPostedFile file = Request.Files["uploadme"]
但我一直得到空值。因此,经过一些研究,我了解到我的表单必须使用
enctype=“multipart/form data”
属性。由于.aspx文件位于母版页文件下,因此我将此属性添加到母版页文件中的表单中。现在,
Request.Files[“uploadme”]
不为空,但其文件名为空字符串,内容长度为0

我无法理解这个问题的根源是什么。如果是因为使用母版页的表单,我不能将表单添加到子页面,因为它说一个页面只能有一个表单。我不知道是否可以使用JavaScript进行上传,因为上传后我需要通过电子邮件发送文件,所以我不知道通过JS上传后如何获取文件


我怎样才能解决这个问题?可能是这样或那样,我所需要的只是一个样式化的上载面板,并在上载后发送到电子邮件文件。

您使用的是母版页,我认为您使用的是.net 2.0或更高版本。如果是这种情况,请使用FileUpload控件(您仍然可以使用CSS隐藏它)。使用FileUpload控件意味着您不需要enctype属性(尽管您不应该在那里产生任何问题)

总而言之,我不相信你会将值复制到文件类型字段并上传文档。这将是一个主要的安全漏洞,因为网站可能会在您不知情的情况下从您的计算机上载文件

input[type=file] { width: 1px; } 
HttpPostedFile file = Request.Files["uploadme"]