JQUERY+ASP.NET的AJAX文件上传

    技术2022-05-19  21

    JQUERY+ASP.NET的AJAX文件上传 2009/04/24 23:31

     

    在知道JQUREY和微软集成的消息后,在项目里面就开始尽量使用JQUERY了,这个DEMO是一个示例。主要文件两个:

    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按钮控件取消提交 }

     


    最新回复(0)