Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
jQuery JavaScript Html/Css Flex Dojo ExtJSAJAX
当前位置: 主页 > Web编程 > AJAX >

jQuery+ASP.NET的AJAX文件上传

时间:2010-01-09 00:36来源:未知 作者:admin 点击:

ajaxUpFile.ashx     服务端处理

Default.aspx     用户提交
 
下面贴出主要代码:
JS部分代码如下
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#代码部分:
/// <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;
             }
         }
ajaxUpFile.ashx     服务端处理
Default.aspx     用户提交
下面贴出主要代码:
JS部分代码如下
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按钮控件取消提交
 
(责任编辑:admin)
Tags:jQuery ASP.NET文件上传
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价
  • JQuery RadioButtonList

    首先介绍程序规则: 1.对以下的选择进行检查,检查是否全部选中 2,所谓的全部选中是指,一行中三个radiobutton必须有一个radiobutton被选中。...

  • JQuery实现智能输入提示(仿机票预订网站)

    最近在研究JQuery框架,JQuery是一套很优秀的JS框架,可以实现很多美观实用的控件。今天给大家推荐一个智能提示的空间,是模仿现在很多机票预订网站的城市智...

  • jQuery得到ashx返回的JSON格式的DataSet的方法

    jQuery得到ashx返回的JSON格式的DataSet的方法...

  • JQuery点击行(tr)实现checkBox选中,反选时移除和添加样式

    用到了三元运算符,和一个自定义的函数。 点击行时效果代码: $( tr ).live( click , function (){ if ($( this ).h...

  • 用jQuery模仿新浪微博时间组件

    废话不多说,实现原理主要是处理table,生成tr td,其中最重要的是如何找出每月第一天是星期几,然后就能对应出这个月的余下天数. 首先,说下有些人说这是重复...

  • Jquery之Ajax运用_学习运用篇

    JQuery中Ajax的运用相信很多人都已熟悉,本文主要是记录下个人实践中的应用知识,旨在加强记忆。 还是先说一些 基础知识: 语法:$.ajax({optio...

  • JQuery单选按钮和多选按钮状态判断

    function check_required() { var valid = true; var required=new Array; $(.require...

  • jQuery AJAX的小应用——手机号码归属地查询

    jQuery AJAX的小应用手机号码归属地查询 想测试下jQuery调用个第三方的WebService,利用 jQuery 的 $.get(url, data...

  • 多标签折页(jQuery示例)

    现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的分析和思考,我发现一...

  • JQuery 文本框高亮显示插件

    JQuery 中没有这个方法,自己今天写了一个Plugin,把代码贴出来分享一下; 代码如下: jquery-highlight.js /* descripti...

  • jquery的select插件

    Jquery是可以操作select表单控件的,比较反锁,下面是收集来的一个插件,还不错,能满足基本的选择。 可以使用这样的引入: type=text/javas...

  • 使用Jquery完成图片的预加载

    // 定义预加载图片列表的函数(有参数) jQuery.preloadImages = function (){ // 遍历图片 for ( var i = 0...

  • jQuery在asp.net中实现图片自动滚动

    时间真快,不知不觉12月已经过了一半了,新的一年即将到来。有段时间没写东西了,技术这东东天天都在更新,天天都是一个新面孔,如果不坚持学习肯定就会落在队尾。要想跟...

  • JQuery遍历表格指定列

    script type=text/javas cript $(function(){ $(#tb tr:gt(0)).each(function(){ var ...

  • AJAX无刷新下拉框联动

    AJAX无刷新下拉框联动的简单示例,分别使用了AJAX组件和xmlHttp异步刷新两种方式。 前台代码: %...@ Page Language=C# Auto...