JQuery.Ajax上传文件给ASP.NET MVC的控制器

IDE:VS2022 环境.Net Framework4.8 MVC5 JQuery是创建MVC项目时自带的jquery-3.4.1.js

没有使用第三方插件,这里是知识的讲解示例

这是使用了存粹JQuery.Ajax上传文件的示例

接收的方法是MVC控制器的方法

///
/// 接收存粹AJAX上传文件的方法 //////
[HttpPost]
public JsonResult UpFiles() {
//Request是网站项目中的重要对象“请求对象”,可能使用这个对象得到用户浏览器上的所有信息
//从请求对象中获取上传的文件对象
//这里字符串"upfile",这个值【必须】和AJAX中包装文件时用的名称一模一样,formData.append("upfile", myfile);
HttpPostedFileBase fileBase = Request.Files["upfile"];
//保存文件夹的【物理路径】 //获取到的是UpFiles这个文件夹在你当前电脑中的位置,如:E:\002课程案例\022专业基础5 MVC\文件上传\WebMVC\UpFiles
string filesPath = Server.MapPath("/UpFiles/"); //注意前后都要有斜线

//SaveAs()是保存文件,如果出错,整个项目就崩溃了,所以加个异常处理
//如果保存文件“正确执行”或“出错了”好分别给出不同数值,我这里使用200表示成功,500表示失败
try
{
    //SaveAs()保存文件,参数是用于保存上传文件的【物理路径和上传文件的名称.扩展名]
    //文件名称是由两部分组成的【文件名.扩展名】,如:"Ajax上传视频.mp4",Ajax上传视频是文件名mp4是扩展名,中间使用点间隔开
    fileBase.SaveAs(filesPath + fileBase.FileName);
    //这个信息是返回到网页上的,路径应该是虚拟路径
    //我们用200表示成功,FileName保存了上传文件名称,FilePath保存了文件保存在网站的哪个文件夹中
    //new用于实例化对象,这里没有指定创建哪个类的使用,这个使用的方式叫创建一个匿名类对象,通用用于临时创建对象
    return Json(new { Code = "200",FileName = fileBase.FileName, FilePath = $"/UpFiles/{fileBase.FileName}" });
}
catch (Exception)
{
    //我们用500表示失败,由于失败FilePath就不用保存信息了
    return Json(new { Code = "500", FileName = fileBase.FileName, FilePath = "" });
}

  



源码下载:https://github.com/dotnet1999/Ajax.UpFile.MVC.git

posted @ 2024-01-15 16:39  程序员老李  阅读(14)  评论(0编辑  收藏  举报