`
chenxueyong
  • 浏览: 336178 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JQUERY+ASP.NET的AJAX文件上传(含Demo)

阅读更多

在知道JQUREY和微软集成的消息后,在项目里面就开始尽量使用JQUERY了,这个DEMO是一个示例。主要文件两个(另外我还打包了一些漂亮的AJAX处理等待的小图片):

ajaxUpFile.ashx     服务端处理

Default.aspx     用户提交

下面贴出主要代码:

JS部分代码如下

Code
    function TestUp()
    {
        ajaxFileUpload("FileUpload1");
    }
   
    function ajaxFileUpload(obfile_id)
    {
    //准备提交处理
    $("#loading_msg").html("<img src=/images/DotAjax.gif />");
   
    //开始提交
    $.ajax
    ({
        type: "POST",
        url:"ajaxUpFile.ashx",
        data:"upfile="+$("#"+obfile_id).val(),
        success:function (data, status)
        {           
            //alert(data);
            var stringArray = data.split("|");
            if(stringArray[0]=="1")
            {
                //stringArray[0]    成功状态(1为成功,0为失败)
                //stringArray[1]    上传成功的文件名
                //stringArray[2]    消息提示
                $("#divmsg").html("<img src=/images/note_ok.gif />"+stringArray[2]+"  文件地址:"+stringArray[1]);
                $("#filepreview").attr({ src:stringArray[1]});
            }           
            else
            {
                //上传出错
                $("#divmsg").html("<img src=/images/note_error.gif />"+stringArray[2]+"");
            }
                      
            $("#loading_msg").html("");
         },
        error:function (data, status, e)
        {
            alert("上传失败:"+e.toString());
        }
     });
     return false;//.NET按钮控件取消提交
}

C#代码部分:

Code
        /// <summary>
        /// 上传文件 方法
        /// </summary>
        /// <param name="fileNamePath"></param>
        /// <param name="toFilePath"></param>
        /// <returns>返回上传处理结果   格式说明: 0|file.jpg|msg   成功状态|文件名|消息    </returns>
        public string UpLoadFile(string fileNamePath, string toFilePath)
        {
            try
            {
                //获取要保存的文件信息
                FileInfo file = new FileInfo(fileNamePath);
                //获得文件扩展名
                string fileNameExt = file.Extension;

                //验证合法的文件
                if (CheckFileExt(fileNameExt))
                {
                    //生成将要保存的随机文件名
                    string fileName = GetFileName() + fileNameExt;
                    //检查保存的路径 是否有/结尾
                    if (toFilePath.EndsWith("/") == false) toFilePath = toFilePath + "/";

                    //按日期归类保存
                    string datePath = DateTime.Now.ToString("yyyyMM") + "/" + DateTime.Now.ToString("dd") + "/";
                    if (true)
                    {
                        toFilePath += datePath;
                    }

                    //获得要保存的文件路径
                    string serverFileName = toFilePath + fileName;
                    //物理完整路径                   
                    string toFileFullPath = HttpContext.Current.Server.MapPath(toFilePath);
                   
                    //检查是否有该路径  没有就创建
                    if (!Directory.Exists(toFileFullPath))
                    {
                        Directory.CreateDirectory(toFileFullPath);
                    }

                    //将要保存的完整文件名               
                    string toFile = toFileFullPath + fileName;

                    ///创建WebClient实例      
                    WebClient myWebClient = new WebClient();
                    //设定windows网络安全认证   方法1
                    myWebClient.Credentials = CredentialCache.DefaultCredentials;
                    ////设定windows网络安全认证   方法2
                    //NetworkCredential cred = new NetworkCredential("UserName", "UserPWD");
                    //CredentialCache cache = new CredentialCache();
                    //cache.Add(new Uri("UploadPath"), "Basic", cred);
                    //myWebClient.Credentials = cache;

                    //要上传的文件      
                    FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);
                    //FileStream fs = OpenFile();      
                    BinaryReader r = new BinaryReader(fs);
                    //使用UploadFile方法可以用下面的格式      
                    //myWebClient.UploadFile(toFile, "PUT",fileNamePath);      
                    byte[] postArray = r.ReadBytes((int)fs.Length);
                    Stream postStream = myWebClient.OpenWrite(toFile, "PUT");
                    if (postStream.CanWrite)
                    {
                        postStream.Write(postArray, 0, postArray.Length);
                    }
                    else
                    {
                        return "0|" + serverFileName + "|" + "文件目前不可写";
                    }
                    postStream.Close();


                    return "1|" + serverFileName + "|" + "文件上传成功";
                }
                else
                {
                    return "0|errorfile|" + "文件格式非法";
                }
            }
            catch (Exception e)
            {
                return "0|errorfile|" + "文件上传失败,错误原因:" + e.Message;
            }
        }

分享到:
评论
3 楼 langfeng123ac 2012-08-23  
二货,这种写法本地又不行,本地有图片,服务器上又没图片。。浪费我时间,白开心一场
2 楼 13142025891 2011-08-30  
本地就不行
都找不到文件怎么保存
1 楼 wazdo 2009-12-24  
又一個轉載的
你測試沒
你放在IIS 下試試
肯定不能

相关推荐

    asp.net ajax异步上传文件demo

    asp.net ajax异步上传文件 代码是从一系统中取出来的并作了修改..感觉非常好用,借助此demo还可以实现异步读取信息 验证用户名 更改信息等... 如出现object error错误 请检查function.js submitUrl参数的提交路径...

    ASP.NET jquery ajax无刷新上传文件demo

    jquery+jquery.uploadify.js插件,实现无刷新上传文件 支持ie6,模拟进度条(模拟进度条,非正式进度) 无刷新上传 ashx处理.

    ASP.NET+AJAX实现进度条上传文件

    该程序采用了jquery框架,实现了小文件上传,不超过80Mb,可以在web.config文件中进行相应的配置,但是有个最大值,具体需要查看msdn,下一篇文章我将会实现大文件上传,下一篇文章估计得过段时间,因为接下来这几天...

    html静态页JQuery ajax示例demo 源码

    JQuery ajax的各种使用方法示例和说明 本示例程序由VS2010建立 c# asp.net ajax demo

    asp.net 省市县联动选择[ajax]demo

    asp.net 省市县联动选择demo 框架 3.5 基于ajax、js、jquery技术实现

    ASP.NET MVC1.0 BBS Demo教学版源码

    这是一个ASP.NET MVC 1.0 的一个Demo教学程序 语言:C# 开发环境:Visual Studion 2008 SP1 数据库:MSSQL 2005 前台功能:实现发贴、回复、注册、登录 (大部份功能使用jQuery 实现Ajax 操作,也有MVC自带的Ajax...

    ajax+asp+jquery+layer.rar

    给一个初学者写的ajax提交表单入库的完整demo,每一行都做了详细的注释,新手一看就会,用jq检测表单是否为空,ajax提交给后端asp页面保存入库,用layer做的弹窗,提示什么没有输入,ajax提交时提示正在等待也是用的...

    wBox asp.net demo 秒杀thickbox ajax

    ——轻量级的弹出窗口jQuery插件,压缩后仅仅3.65Kb,基于jQuery1.4.2开发,主要实现弹出框的效果,并且加入了很多有趣的功能,比如callback函数,显示隐藏层,Ajax页面,iframe嵌入页面……

    jquery调用asp.net 页面后台的实现代码

    input type=”button” id=”AjaxDemo” value=”AjaxDemo”&gt; 再aspx后台的页面编写一个简单的方法,代码如下: 代码如下: [WebMethod] public static string ABC(string ABC) { return ABC; } 必须声明为静态方法...

    ASP.NET MVC1.0 BBS

    ASP.NET MVC1.0 BBS 简易Demo教学版源码 这是一个ASP.NET MVC 1.0 的一个简易Demo教学程序 版本:ASP.NET MVC 1.0 框架:.NET Framework 3.5 SP1 语言:C# 开发环境:Visual Studion 2008 SP1 数据库:MSSQL ...

    MvcPager 1.5 for ASP.NET MVC 3 demo project (EN)

    支持使用ASP.NET MVC Ajax默认的MicrosoftAjax和MicrosoftMvcAjax客户端脚本库实现Ajax分页; 支持使用jQuery实现Ajax分页,生成的Html代码更精简; 支持Ajax分页模式下,若客户端浏览器不支持或禁用Javascript功能...

    ZoomImageDemoASP.NET运用AJAX头像图片裁切(仿开心网)

    ZoomImageDemoASP.NET运用AJAX头像图片裁切(仿开心网)用户头像裁切功能,用到了JQuery 1.2,源码包中含有两个版本,其中一个是通用版,另一个是专为VS2005开发的朋友准备的。至于图片裁切功能现在很流行,很多大...

    jquery ajax实现省市二级联动

    该资源包含了一个使用jquery ajax实现的省市二级联动的简单demo,简单易懂,可以参考博客:http://blog.csdn.net/mockingbirds/article/details/46842327

    各种文件上传(ajax,jquery,wcf,sl)

    搜集网上各种上传demo,包括: Ajax-Uploader asp_net_progressbar(IEUpdate) 大文件上传 进度条上传 jquery上传 wcf上传 sl上传

    Jqgrid demo-史上最强大,没有之一

    Jqgrid demo-史上最强大,没有之一, 为了大家能够更好的学习和使用Jqgrid网格插件,我决定用Strtus2+Spring+hibernate+Jquery+Jqgrid实现一个Jqgrid网格插件的demo。当然官方网站上面已经有了PHP版本和ASP.NET版本...

    JQueryGridDemo

    Since ASP.NET MVC includes jQuery, I figured it’d be fun to use a jQuery plugin for this demo, so I chose jQuery Grid. After creating a standard ASP.NET MVC project, the first step was to download...

    asp.net如何进行mvc异步查询

    1、依赖文件jquery.js、jquery.unobtrusive-ajax.js。 2、创建部分视图,PartialView主要存放服务器发送过来的数据。 3、一个包含集合数据的viewmodel. 部分视图代码基本如下: asp.net怎样进行mvc异步查询? ...

    Apress.Beginning.ASP.NET.MVC.4.2013

    How to apply and extend the MVC patterns to real world solutions: adding AJAX and jQuery, validation and securing user data, testing and deploying the finished application. All of these are discussed...

    asp.net+ajax+sqlserver自动补全功能实现解析

    代码下载 说明:数据库连接字符串在web.config文件中,为方便运行使用的是官方的Northwind数据库。 参考(向其作者致敬): ² http://www.loveweb8.com/plus/demo.php?aid=57这个例子是html源码。利用jquery....

Global site tag (gtag.js) - Google Analytics