基于jQuery与jquery.form.js插件实现文件异步上传
作者:木棉时间:2026-10-30 03:29:06浏览:361
本文详细解析了利用jquery.form.js插件实现文件异步上传的具体方法。通过提供完整的前台JavaScript代码与后台C#控制器代码,展示了如何配置表单、绑定提交事件以及处理服务器端接收的文件数据,帮助开发者快速掌握该插件的核心用法。
jQuery异步上传实现概述
文章深入剖析了利用jquery.form.js插件进行异步文件上传的前后端实现细节,并提供了完整的代码示例供参考。
前台JavaScript实现
前端实现部分:
前端HTML与脚本结构
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<script src="~/Scripts/jquery-1.7.2.min.js"></script>
<script src="~/Scripts/jquery.form.js"></script>
<title>upload</title>
</head>
<body>
<form id="fileForm" method="post" enctype="multipart/form-data" action="/upload/upload">
文件名称:<input name="fileName" type="text"><br />
上传文件:<input name="myfile" type="file" multiple="multiple"><br />
<input id="submitBtn" type="submit" value="提交">
<img src="#" alt="my img" id="iceImg" width="300" height="300" style="display: block;" />
</form>
<input type="text" name="height" value="170" />
<input id="sbtn2" type="button" value="提交表单2">
<input type="text" name="userName" value="" />
<script type="text/javascript">
$(function () {
$("#fileForm").ajaxForm({
//定义返回JSON数据,还包括xml和script格式
//clearForm Boolean值属性,表示是否在表单提交成功后情况表单数据
//dataType 提交成果后返回的数据格式,可选值包括xml,json或者script
//target 服务器返回信息去更新的页面对象,可以是jquery选择器字符串或者jquer对象或者DOM对象。
//type 提交类型可以是”GET“或者”POST“
//url 表单提交的路径
dataType: 'json',
beforeSend: function () {
//表单提交前做表单验证
$("#myh1").show();
},
success: function (data) {
//提交成功后调用
//alert(data.message);
$("#iceImg").attr('src', '/upload/img/' + data.fileName);
$("#myh1").hide();
//防止重复提交的方法
//1.0 清空表单数据
$('#fileForm').clearForm();
//2.0 禁用提交按钮
//3.0 跳转页面
}
});
$("#myfile").change(function () {
$("#submitBtn").click();
});
$("#iceImg").click(function () {
$("#myfile").click();
});
});
</script>
<h1 id="myh1" style="display: none;">加载中...</h1>
</body>
</html>
后台C#控制器处理
后端处理逻辑:
后端文件接收逻辑
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace IceMvc.Controllers
{
public class UploadController : Controller
{
//
// GET: /Upload/
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Upload()
{
var filesList = Request.Files;
for (int i = 0; i < filesList.Count; i++)
{
var file = filesList[i];
if (file.ContentLength > 0)
{
if (file.ContentLength > 5242880)
{
return Content("<script>alert('注册失败!因为您选择图片文件不能大于5M.');window.location='/User/Register';</script>");
}
//得到原图的后缀
string extName = System.IO.Path.GetExtension(file.FileName);
//生成新的名称
string newName = Guid.NewGuid() + extName;
string imgPath = Server.MapPath("/upload/img/") + newName;
if (file.ContentType.Contains("image/"))
{
using (Image img = Image.FromStream(file.InputStream))
{
img.Save(imgPath);
}
var obj = new { fileName = newName };
return Json(obj);
}
else
{
//return Content("<script>alert('注册失败!因为您未选择图片文件.');window.location='/User/Register';</script>");
}
}
}
return Content("");
}
public ActionResult Afupload()
{
return View();
}
}
}
总结
上述内容总结了基于jquery.form.js的异步上传方案,期望能为读者的技术学习提供有益支持。
作者最新文章
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
为什么JS中typeof []返回object:数组类型检测误区解析
2026-11-04 19:50:47
