无法读取在c#处理程序中上传的文件

时间:2013-02-19 09:12:58

标签: c# asp.net ashx

我正在尝试将文件上传到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。

4 个答案:

答案 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代码

的示例