1,前端页面:外面还有一个Form (PrmTest/Report) <form class="cmxform form-horizontal tasi-form" id="submitForm" method="POST" action="@Request.Url.PathAndQuery" novalidate="novalidate">
@using (Html.BeginForm("UploadFile", "PrmTest", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<label class="control-label col-lg-1">请选择</label>
<div class="col-lg-11">
<input id="file-zh" name="file-zh[]" type="file" multiple class="file-loading" />
</div>
}</form>
2,后端控制器方法:
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
var fileName = file.FileName;
var filePath = Server.MapPath(string.Format("~/{0}", "ProjectFile"));
file.SaveAs(Path.Combine(filePath, fileName));
return View(Content(fileName));
} [HttpPost]
public ActionResult Report(string file)
{
……
}3,问题现象:(1)选择文件后点上传,跟踪发现没有进入UploadFile方法,却进入Report方法;
(2)若不加form,把file控件修改成: <input id="file-zh" name="file-zh[]" type="file"data-upload-url="/PrmTest/Upload" multiple class="file-loading" /> 此时可以进入控制器UploadFile方法,但是HttpPostedFileBase file对象为空。请问如何解决??非常感谢!!!
@using (Html.BeginForm("UploadFile", "PrmTest", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<label class="control-label col-lg-1">请选择</label>
<div class="col-lg-11">
<input id="file-zh" name="file-zh[]" type="file" multiple class="file-loading" />
</div>
}</form>
2,后端控制器方法:
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
var fileName = file.FileName;
var filePath = Server.MapPath(string.Format("~/{0}", "ProjectFile"));
file.SaveAs(Path.Combine(filePath, fileName));
return View(Content(fileName));
} [HttpPost]
public ActionResult Report(string file)
{
……
}3,问题现象:(1)选择文件后点上传,跟踪发现没有进入UploadFile方法,却进入Report方法;
(2)若不加form,把file控件修改成: <input id="file-zh" name="file-zh[]" type="file"data-upload-url="/PrmTest/Upload" multiple class="file-loading" /> 此时可以进入控制器UploadFile方法,但是HttpPostedFileBase file对象为空。请问如何解决??非常感谢!!!
解决方案 »
- 两个下拉列表动态响应,碰到个难题怎么解决?
- 动态添加的控件怎么找不到
- 返回的是table类型,但是还有一个输出参数,也要返回,怎么办?
- 如何获取DataTable某一列的某个值在那一行?
- Server Error in '/' Application这个错误是怎么回事呢?在网上找了,貌似都没看到解决方案??????
- 请教EXCEL导入sqlserver数据库
- 怎么编程把足球盘口里面的水位搞下来
- MSDN上在介绍安装Duwamish7.0时,有一个安全性要求,这个是我必须要设置的吗?
- IIS URL REWRITE 问题
- 关于Global.asax
- Asp.net Web Api Core 2.1中 如何在过滤其中返回数据,向下传递参数
- MVC 使用 UEditor 上传内容和图片
把嵌套的form去掉,如何把文件上传?关键文件流对象为空。
@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<label class="control-label col-lg-1">请选择</label>
<div class="col-lg-11">
<input id="file-zh" name="file" type="file" multiple class="file-loading" />
</div>
<button type="submit">asd</button>
}
{
var fileName = file.FileName;
var filePath = Server.MapPath(string.Format("~/{0}", "ProjectFile"));
file.SaveAs(Path.Combine(filePath, fileName));
return View(Content(fileName));
}
<button type="submit">asd</button>
这种方法自然是可以的
不知道楼主为什么带着那么多的属性
直接 <input type="file" id="fileUpLoad" name="fileUpLoad" />不就可以了吗 , 不过 name属性是必须带的通过 ajax 向action发送异步请求 就行了
var data = new FormData();
var file = $("#fileUpLoad").prop("files")[0];
data.append("file", file);
$.ajax({
url: "~",
type: 'post',
data: data,
contentType: false, //必须: 需要设置为false,不然后台拿不到数据
processData: false, //必须: 传送DOM信息,所以设为false
dataType: "json",
success: function (res) {
},
error: function (res) {
} });