文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

asp.net如何使用ajaxFileUpload插件上传文件

2023-06-22 03:37

关注

这篇文章主要讲解了“asp.net如何使用ajaxFileUpload插件上传文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“asp.net如何使用ajaxFileUpload插件上传文件”吧!

ajaxFileUpload.js 很多同名的,因为做出来一个很容易。

AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值。

当初做了个异步上传的功能,选择它因为它的配置方式比较像jQuery的AJAX,我很喜欢。

评论里面说到的不行。那是因为我们用的不是同一个js。我上github搜AjaxFileUpload出来很多类似js。

ajaxFileUpload是一个异步上传文件的jQuery插件

传一个不知道什么版本的上来,以后不用到处找了。

语法:$.ajaxFileUpload([options])

options参数说明:

错误提示:

使用方法:

先引入jQuery与ajaxFileUpload插件。注意先后顺序,这个不用说了,所有的插件都是这样。

<script src="jquery-1.7.1.js" type="text/javascript"></script>    <script src="ajaxfileupload.js" type="text/javascript"></script>

HTML代码:

<body>    <p><input type="file" id="file1" name="file" /></p>    <input type="button" value="上传" />    <p><img id="img1" alt="上传成功啦" src="" /></p></body>

JS代码

<script src="jquery-1.7.1.js" type="text/javascript"></script>    <script src="ajaxfileupload.js" type="text/javascript"></script>    <script type="text/javascript">        $(function () {            $(":button").click(function () {                ajaxFileUpload();            })        })        function ajaxFileUpload() {            $.ajaxFileUpload            (                {                    url: '/upload.aspx', //用于文件上传的服务器端请求地址                    secureuri: false, //是否需要安全协议,一般设置为false                    fileElementId: 'file1', //文件上传域的ID                    dataType: 'json', //返回值类型 一般设置为json                    success: function (data, status)  //服务器成功响应处理函数                    {                        $("#img1").attr("src", data.imgurl);                        if (typeof (data.error) != 'undefined') {                            if (data.error != '') {                                alert(data.error);                            } else {                                alert(data.msg);                            }                        }                    },                    error: function (data, status, e)//服务器响应失败处理函数                    {                        alert(e);                    }                }            )            return false;        }    </script>

后台页面upload.aspx代码:

protected void Page_Load(object sender, EventArgs e)        {            HttpFileCollection files = Request.Files;            string msg = string.Empty;            string error = string.Empty;            string imgurl;            if (files.Count > 0)            {                files[0].SaveAs(Server.MapPath("/") + System.IO.Path.GetFileName(files[0].FileName));                msg = " 成功! 文件大小为:" + files[0].ContentLength;                imgurl = "/" + files[0].FileName;                string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";                Response.Write(res);                Response.End();            }        }

本实例完整代码下载

来一个MVC版本的实例:

控制器代码

public class HomeController : Controller    {        public ActionResult Index()        {            return View();        }        public ActionResult Upload()        {            HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;            string imgPath = "";            if (hfc.Count > 0)            {                imgPath = "/testUpload" + hfc[0].FileName;                string PhysicalPath = Server.MapPath(imgPath);                hfc[0].SaveAs(PhysicalPath);            }            return Content(imgPath);        }    }

前端视图,HTML与JS代码,成功上传后,返回图片真实地址并绑定到<img>的SRC地址

<html><head>    <script src="/jquery-1.7.1.js" type="text/javascript"></script>    <script src="/ajaxfileupload.js" type="text/javascript"></script>    <script type="text/javascript">        $(function () {            $(":button").click(function () {                if ($("#file1").val().length > 0) {                    ajaxFileUpload();                }                else {                    alert("请选择图片");                }            })        })        function ajaxFileUpload() {            $.ajaxFileUpload            (                {                    url: '/Home/Upload', //用于文件上传的服务器端请求地址                    secureuri: false, //一般设置为false                    fileElementId: 'file1', //文件上传空间的id属性  <input type="file" id="file" name="file" />                    dataType: 'HTML', //返回值类型 一般设置为json                    success: function (data, status)  //服务器成功响应处理函数                    {                        alert(data);                        $("#img1").attr("src", data);                        if (typeof (data.error) != 'undefined') {                            if (data.error != '') {                                alert(data.error);                            } else {                                alert(data.msg);                            }                        }                    },                    error: function (data, status, e)//服务器响应失败处理函数                    {                        alert(e);                    }                }            )            return false;        }    </script></head><body>    <p><input type="file" id="file1" name="file" /></p>    <input type="button" value="上传" />    <p><img id="img1" alt="上传成功啦" src="" /></p></body></html>

最后再来一个上传图片且附带参数的实例:控制器代码:

public class HomeController : Controller    {        public ActionResult Index()        {            return View();        }        public ActionResult Upload()        {            NameValueCollection nvc = System.Web.HttpContext.Current.Request.Form;            HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;            string imgPath = "";            if (hfc.Count > 0)            {                imgPath = "/testUpload" + hfc[0].FileName;                string PhysicalPath = Server.MapPath(imgPath);                hfc[0].SaveAs(PhysicalPath);            }            //注意要写好后面的第二第三个参数            return Json(new { Id = nvc.Get("Id"), name = nvc.Get("name"), imgPath2 = imgPath },"text/html", JsonRequestBehavior.AllowGet);        }    }

Index视图代码:

<html><head>    <script src="/jquery-1.7.1.js" type="text/javascript"></script>    <script src="/ajaxfileupload.js" type="text/javascript"></script>    <script type="text/javascript">        $(function () {            $(":button").click(function () {                if ($("#file1").val().length > 0) {                    ajaxFileUpload();                }                else {                    alert("请选择图片");                }            })        })        function ajaxFileUpload() {            $.ajaxFileUpload            (                {                    url: '/Home/Upload', //用于文件上传的服务器端请求地址                    type: 'post',                    data: { Id: '123', name: 'lunis' }, //此参数非常严谨,写错一个引号都不行                    secureuri: false, //一般设置为false                    fileElementId: 'file1', //文件上传空间的id属性  <input type="file" id="file" name="file" />                    dataType: 'json', //返回值类型 一般设置为json                    success: function (data, status)  //服务器成功响应处理函数                    {                        alert(data);                        $("#img1").attr("src", data.imgPath2);                        alert("你请求的Id是" + data.Id + "     " + "你请求的名字是:" + data.name);                        if (typeof (data.error) != 'undefined') {                            if (data.error != '') {                                alert(data.error);                            } else {                                alert(data.msg);                            }                        }                    },                    error: function (data, status, e)//服务器响应失败处理函数                    {                        alert(e);                    }                }            )            return false;        }    </script></head><body>    <p><input type="file" id="file1" name="file" /></p>    <input type="button" value="上传" />    <p><img id="img1" alt="上传成功啦" src="" /></p></body></html>

此实例在显示出异步上传图片的同时并弹出自定义传输的参数。本实例下载地址

今天调试过程中发现一个问题,就是作为文件域(<input type="file">)必须要有name属性,如果没有name属性,上传之后服务器是获取不到图片的。如:正确的写法是<input type="file" id="file1" name="file1" />

最经典的错误终于找到原因所在了。Object function (a,b){return new e.fn.init(a,b,h)} has no method 'handleError',这个是google浏览器报的错误,非常经典, 不知道是我的版本问题还是真正存在的问题。这个问题的根源经过N次上传才找到问题的根本所在。答案是:dataType参数一定要大写。如:dataType: 'HTML'。

感谢各位的阅读,以上就是“asp.net如何使用ajaxFileUpload插件上传文件”的内容了,经过本文的学习后,相信大家对asp.net如何使用ajaxFileUpload插件上传文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯