在我的ASP.NET Web表单中,我试图自定义我的文件上载面板。我所做的只是放入一个HTML输入按钮和一个文本框。还有一个隐藏的HTML文件上传控制。当用户点击按钮时,出现文件选择窗口,当用户选择文件时,该值被写入可见文本框。
迄今为止都很好。但是我在尝试将选定文件附加到代码页中的电子邮件时遇到问题。
这是HTML标记:
和JS(我使用这个只是为了复制文件名,并将其写入txtFileName,以显示给用户):
function CopyMe(oFileInput, sTargetID) {
var arrTemp = oFileInput.value.split('\\');
document.getElementById(sTargetID).value = arrTemp[arrTemp.length - 1];
}和CSS:
input[type=file] { width: 1px; }我在我的.cs文件中使用下面的代码来获取文件属性:
HttpPostedFile file = Request.Files["uploadme"]但我一直在获得空值。因此经过一番调查,我发现我的表单必须使用enctype="multipart/form-data"属性。由于我的.aspx文件在母版页文件下,因此我将该属性添加到了我的母版页文件中的表单中。现在,Request.Files["uploadme"]不为空,但其文件名为空字符串,其ContentLength为0。
我无法理解可能是这个问题的根源。如果是因为使用母版页的形式,我不能将表单添加到我的子页面,因为它表示页面只能有一个表单。我不知道是否可以使用JavaScript进行上传,因为我需要在上传后通过电子邮件发送文件,所以我不知道如何在通过JS上传后获取文件。
我怎么解决这个问题?它可能是这样或那样,我只需要一个风格化的上传面板和上传后的电子邮件文件。