我正在尝试将文件上传到c#中的处理程序,但好像文件没有上传。调用Request.Files["fileNameHere"]
将返回null
我的HTML代码:
<form id="importManagerForm" action="../ImportManager.ashx" method="POST">
<input name="selectedFile" id="selectedFile" type="file" />
<input type="submit" value="submit"/>
</form>
ashx处理程序中的代码是:
public void ProcessRequest(HttpContext context)
{
var importFile = context.Request.Files["selectedFile"]; //This part returns null
var fileName = new Guid().ToString() + ".csv";
importFile.SaveAs(fileName);
}
知道问题是什么?
更新:
context.Request.Files
上的快速调试显示文件计数为0。
答案 0 :(得分:3)
您似乎错过了表单上的enctype="multipart/form-data"
属性。
答案 1 :(得分:1)
您正在使用html表单控件而不是asp.net表单服务器控件。
您需要设置enctype
<form id="importManagerForm" enctype="multipart/form-data"
action="../ImportManager.ashx" method="POST">
只有这样你才能收到文件
答案 2 :(得分:1)
每当我们有一个以html格式上传的文件或每当我们在表单中使用标记时,我们必须通知浏览器该请求包含二进制数据。 因此,您必须在标记中添加 enctype 属性。
应将enctype =“multipart / form-data”添加到表单中。
表示在发送之前没有编码字符。即它确保在将数据发送到服务器之前没有编码字符。
答案 3 :(得分:0)
浏览器可能是原因。如果您使用IE,则文件将位于Request.Files
,但在Chrome和FF中,文件位于Request.QueryString["qqfile"]
Here's代码