ASP.NET MVC中使用AJAX.BeginForm 无法得到文件?该怎么处理
ASP.NET MVC中使用AJAX.BeginForm 无法得到文件?
@using (Ajax.BeginForm("UpLoadFile", "CourseCenter", new AjaxOptions { HttpMethod = "POST" }, new { enctype = "multipart/form-data" }))
Request.Files[upload]; count始终是0
------解决方案--------------------
http://stackoverflow.com/questions/19042116/ajax-beginform-in-mvc-to-upload-files
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
这个时候需要换个方法获取文件
Request.Files[upload]是获取字符串的
------解决方案--------------------
你看看AJAX的BeginForm,实际post的数据
------解决方案--------------------
AJAX肯定是得不到文件的,安全性问题.
------解决方案--------------------
其实问题出在这个地方 form中有一个属性 enctype="multipart/form-data",ajax.beginform生成出来的属性中没有enctype,你需要在ajax.beginform(参数,参数,new{id="form1",class='form1',enctype="multipart/form-data"})在一个参数中设置,具体哪一个忘记了,就是设置元素属性的一个参数,自己看看,加上enctype即可
------解决方案--------------------
Index.cshtml
@using (Ajax.BeginForm("Files", "Home", new AjaxOptions() { HttpMethod = "post" }, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken();
<input type="file" name="file1" /> <br />
<input type="submit" value="上传" />
}
<div class="progress">
<div class="bar"></div >
<div class="percent">0%</div >
</div>
<div id="status"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
(function () {
var bar = $(".bar");
var percent = $(".percent");
var status = $("#status");
$('form').ajaxForm({
beforeSend: function () {
status.empty();
var percentVal = '0%';
@using (Ajax.BeginForm("UpLoadFile", "CourseCenter", new AjaxOptions { HttpMethod = "POST" }, new { enctype = "multipart/form-data" }))
Request.Files[upload]; count始终是0
------解决方案--------------------
http://stackoverflow.com/questions/19042116/ajax-beginform-in-mvc-to-upload-files
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
这个时候需要换个方法获取文件
Request.Files[upload]是获取字符串的
public PartialViewResult Files(HttpPostedFileBase file)
{
IEnumerable<string> files;
if ((file != null) && (file.ContentLength > 0))
{
string fileName = file.FileName;
string saveLocation = @"D:\Files";
string fullFilePath = Path.Combine(saveLocation, fileName);
try
{
file.SaveAs(fullFilePath);
FileInfo fileInfo = new FileInfo(fullFilePath);
file.InputStream.Read(new byte[fileInfo.Length], 0, file.ContentLength);
}
catch (Exception e)
{
TempData["FileUpload"] = e.Message;
return PartialView();
}
files = Directory.GetFiles(@"D:\Files\");
return PartialView(files);
}
else
{
files = Directory.GetFiles(@"D:\Files\");
return PartialView(files);
}
}
------解决方案--------------------
你看看AJAX的BeginForm,实际post的数据
------解决方案--------------------
AJAX肯定是得不到文件的,安全性问题.
------解决方案--------------------
其实问题出在这个地方 form中有一个属性 enctype="multipart/form-data",ajax.beginform生成出来的属性中没有enctype,你需要在ajax.beginform(参数,参数,new{id="form1",class='form1',enctype="multipart/form-data"})在一个参数中设置,具体哪一个忘记了,就是设置元素属性的一个参数,自己看看,加上enctype即可
------解决方案--------------------
Index.cshtml
@using (Ajax.BeginForm("Files", "Home", new AjaxOptions() { HttpMethod = "post" }, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken();
<input type="file" name="file1" /> <br />
<input type="submit" value="上传" />
}
<div class="progress">
<div class="bar"></div >
<div class="percent">0%</div >
</div>
<div id="status"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
(function () {
var bar = $(".bar");
var percent = $(".percent");
var status = $("#status");
$('form').ajaxForm({
beforeSend: function () {
status.empty();
var percentVal = '0%';