找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3305|回复: 0
打印 上一主题 下一主题
收起左侧

Asp.net异步上传文件

[复制链接]
跳转到指定楼层
楼主
ID:83710 发表于 2015-6-25 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hongniu 于 2015-6-25 16:28 编辑

    这个客户就是上帝的年代里一个好的用户体验比实用的功能要得民心,上传大文件时长期的白屏自己看着都烦。何况是吊的不能再吊甲方。

    借用jquery.from.js插件实现异步无刷新上传文件。话说如果是自己去实现的话太麻烦了,这不是重点、重点是我不会。

    工具:Jquery.js  、 jquery.form.js

    思路:aspx页面ajax提交文件给后台ashx处理保存,处理后返回给前天一个处理结果。

    详细:前台使用html两个控件:一个是button另一个当然是丑到爆的file
        
        1、拖入必须的两个控件
            
<form id="fm1" method="post">                <input type="file" id="btnfile"  value="提交" />
                <input type="button" id="btn" value="上传" />
             </form>

        2、 编写JQuery,给button绑定当定单击事件
            
$(function () {                                            // 页面加载完后触发                $("#btn").click(function () {                     // id为btn的按钮绑定单击事件
                    $("#fm1").ajaxSubmit({
                        url: "UploadFileHandler.ashx",
                        type: "post",
                        success: function (data) {
                            alert(data);
                        }
                    });
                });
            })

        3、后台ashx处理文件并保存
        public void ProcessRequest(HttpContext context)

        {
            context.Response.ContentType = "text/plain";
            // 获取上传的文件的对象  
            HttpPostedFile img = context.Request.Files["btnfile"];


            // 获取上传文件的名称  
            string s = img.FileName;
            // 截取获得上传文件的名称(ie上传会把绝对路径也连带上,这里只得到文件的名称)  
            string str = s.Substring(s.LastIndexOf("\\") + 1);
            string path = "~/UploadFiles/" + str;
            // 保存文件  
            img.SaveAs(context.Server.MapPath(path));
            // HttpRuntime.AppDomainAppVirtualPath主要是获取应用程序虚拟路径名称,因为响应给页面时不会自动添加而导致无法显示图片
            //context.Response.Write(HttpRuntime.AppDomainAppVirtualPath + path.Substring(1));//path.Substring(1)用来去除第一个~字符
            context.Response.Write("提示:文件上传成功!");
        }

        4、到此为止就可以实现异步上传了,但是你会发现上传4M以上的文件就会出错。所以还需要在配置文件中修改一下文件最大值以及响应时间。

        
<httpRuntime  targetFramework="4.5" maxRequestLength="1048576" executionTimeout="3600" />


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表