zoukankan      html  css  js  c++  java
  • jQuery+ASP.NET的AJAX文件上传

    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;
                 }
             }

  • 相关阅读:
    【hihocoder 1477】闰秒
    【codeforces 768F】Barrels and boxes
    【codeforces 767E】Change-free
    【codeforces 810A】Straight «A»
    【codeforces 810B】Summer sell-off
    【codeforces 810C】Do you want a date?
    【codeforces 757E】Bash Plays with Functions
    【codeforces 749D】Leaving Auction
    Java数据结构与算法(5)
    使用Xshell远程连接管理Linux实践
  • 原文地址:https://www.cnblogs.com/linzheng/p/1851822.html
Copyright © 2011-2022 走看看