ASP.NET MVC中使用表单上传文件时的注意事项

时间:2022-09-08 14:42:59

最近了好久没写ASP.NET 使用HTML的FORM来上传文件了,结果写了个文件上传发现ASP.NET MVC的Controller中老是读取不到上传的文件。

MVC的View(Index.cshtml)如下所示:

@{
ViewBag.Title = "Index";
} <h2>Index</h2>
<form action="@Url.Action("Upload")" method="post" >
<input name="filedata" type="file" value="浏览" /><br />
<input type="submit" value="提交" />
</form>

HomeController中读取文件的Action如下所示:

public ActionResult Upload()
{
string folder = @"C:\inetpub\wwwroot\Upload";
var filePath = folder+"\\"+Request.Files["filedata"].FileName.Substring(Request.Files["filedata"].FileName.LastIndexOf("\\")+); if(System.IO.File.Exists(filePath))
{
System.IO.File.Delete(filePath);
} Request.Files["filedata"].SaveAs(filePath); return View("Index");
}

结果上面代码中的Request.Files["filedata"]始终报错,Request.Files.Count也始终为0。

我就纳闷了这明明FORM表单中有一个input为file的组件,为什么http请求post到服务器端后,什么都没读到?

后来经过网上搜索发现,原来如果FORM表单要上传文件必须得加上属性enctype="multipart/form-data"才行。所以将MVC的View(Index.cshtml)改为如下代码:

@{
ViewBag.Title = "Index";
} <h2>Index</h2>
<form action="@Url.Action("Upload")" method="post" enctype="multipart/form-data">
<input name="filedata" type="file" value="浏览" /><br />
<input type="submit" value="提交" />
</form>

这一次Request.Files["filedata"]终于读到文件了,Request.Files.Count也为1了。

所以请记住在ASP.NET中如果要使用HTML表单上传文件,有两个需要注意的地方:

  1. FORM标签的method为post,并且要加上enctype="multipart/form-data"这个属性值
  2. input file这个组件必须要有属性name,比如在我们这个例子中我们将input file标签的name定义为了filedata,这样我们在ASP.NET的服务器端才能用Request.Files["filedata"]读取到上传的文件。我试了下如果input file不定义name属性,Request.Files.Count也为0,说明ASP.NET完全会忽略不带name属性的input file标签

ASP.NET MVC中使用表单上传文件时的注意事项的更多相关文章

  1. ASP&period;NET MVC使用input标签上传文件

    有些时间学习了,温习一下ASP.NET MVC了.上传文档是在开发过程中,必须撑握的一个功能.以前上传均是使用第三方控件uploadify来实现,今天使使用VS标准标签input 的type=&quo ...

  2. asp&period;net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  3. MVC应用程序实现上传文件&lpar;续&rpar;

    前几天,有练习了<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html 那只是把文档上传至MVC应用程序下的某一目录之中. 其 ...

  4. Express下使用formidable实现POST表单上传文件并保存

    Express下使用formidable实现POST表单上传文件并保存 在上一篇文章中使用formidable实现了上传文件,但没将它保存下来. 一开始,我也以为是只得到了文件的相关信息,需要用fs. ...

  5. 巨蟒python全栈开发django11&colon;ajax&amp&semi;&amp&semi;form表单上传文件contentType

    回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...

  6. 记录一次node中台转发表单上传文件到后台过程

    首发掘金 记录一次node中台转发表单上传文件到后台过程 本篇跟掘金为同一个作者leung   公司几个项目都是三层架构模式即前台,中台(中间层),后台.前台微信端公众号使用vue框架,后台管理前端使 ...

  7. ASP&period;NET页面上传文件时提示文件大小超过请求解决方法

    在webconfig中节点 <system.web> </system.web> 下加入以下代码:maxRequestLength为限制上传文件大小,executionTime ...

  8. IE中使用ajaxSubmit上传文件弹出下载提示框

    使用jQuery的ajaxSubmit 上传文件时,在IE中会弹出下载提示框: 解决方法:让action返回String类型,而不是ActionView,

  9. jmert中如何测试上传文件接口(测试上传excel文件)

    第一次用jmeter这个工具测试上传接口,以前没做过这一块,导致走了很多弯路.特地把经验谢谢,怕自己以后忘记... 一,jmeter如何上传文件 jmeter 的 http requests post ...

随机推荐

  1. hihocode ---1032

    #include<iostream> #include<cstring> #include<cstdio> using namespace std; + ; ]; ...

  2. P235 实战练习(集合类2)、摇奖程序和验证码(修改版)

    1.分别向Set集合以及List集合中添加“A”.“a”.“c”.“C”.“a”5个元素,观察重复值“a”能否在List集合以及Set集合中成功添加. package org.hanqi.practi ...

  3. JavaScript高级程序设计:第四章

    变量.作用域和内存问题 1.ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,引用类型值指的是有多个值构成的对象. 2.动态的属性:定义一个基 ...

  4. &period;Net 5分钟搞定网页实时监控

    一.为什么会用到网页实时监控 LZ最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地.买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要 ...

  5. 2&period;2&period;1 LinearLayout&lpar;线性布局&rpar;

    本节引言 本节开始讲Android中的布局,Android中有六大布局,分别是: LinearLayout(线性布局), RelativeLayout(相对布局), TableLayout(表格布局) ...

  6. OAuth 2&period;0 - Authorization Code授权方式详解

    I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门 ...

  7. 移动端车牌识别&sol;车牌OCR识别

    周末,小编约了朋友商场shopping. 开车进地下车库时,“滴”的一声,完成车牌录入:开车离开时,扫描二维码,输入车牌,完成停车收费.小编不禁感叹科技改变生活,人工智能给生活带来的便利. 车牌自动识 ...

  8. JZOJ&period;5257【NOIP2017模拟8&period;11】小X的佛光

    Description

  9. css3 渐变色

    Firefox可以使用角度来设定渐变的方向,而webkit只能使用x和y轴的坐标. 渐变可以创建类似于彩虹的效果,低版本的浏览器使用图片来实现,CSS3将会轻松实现网页渐变效果 粘贴代码 <di ...

  10. 【java规则引擎】模拟rete算法的网络节点以及匹配过程

    转载请注明:http://www.cnblogs.com/shangxiaofei/p/6340655.html 本文只用于理解rete算法,通过一个规则的编译成的网络结构,以及匹配过程去理解rete ...