`
chenxueyong
  • 浏览: 341919 次
  • 性别: 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 下試試
肯定不能

相关推荐

    jquery+asp.net综合实例

    "Demo"目录很可能是各种示例代码,展示如何在ASP.NET项目中集成和使用jQuery,通过实际操作理解两者结合的用法。"Jumbot.DataOper"可能涉及数据库操作,利用jQuery进行AJAX请求与ASP.NET的后台数据库交互,进行数据...

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

    ASP.NET、jQuery 和 AJAX 结合使用可以创建动态、无刷新的网页应用,使得用户在上传文件时无需等待页面重新加载,提升用户体验。本教程通过一个名为 "jquery.uploadify.js" 的插件,演示了如何在 ASP.NET 环境下实现...

    asp.net ajax异步上传文件demo

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

    Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

    综上所述,这个项目是一个综合性的企业网站演示,利用了Spring.NET、NHibernate、ASP.NET MVC、jQuery 和 easyUI 这些技术栈,展示了如何将开源框架整合在一起,构建一个中英文双语的小型企业网站。通过学习这个项目...

    一个基于C#+ASP.NET实现的图片裁剪Image Cropping 处理控件代码

    5. **AJAX技术**:为了实现无刷新的用户体验,项目可能使用了ASP.NET的AJAX扩展,或者纯JavaScript的异步请求,将裁剪结果发送到服务器进行处理和保存。 6. **图像处理库**:在后端,可能使用了.NET框架中的System....

    JQuery-EasyUI+Asp.net Demo code

    **jQuery EasyUI与ASP.NET整合应用详解** 在Web开发领域,jQuery EasyUI和ASP.NET的结合使用能够快速构建出功能丰富的交互式用户界面。本文将深入解析如何利用这两个技术进行项目开发,尤其适合初学者快速掌握系统...

    asp.net 文件批量上传demo[jqueryUploadify]

    在这个场景下,`jQuery Uploadify`插件是一个非常实用的工具,它为ASP.NET开发者提供了一个简单易用的前端文件上传解决方案。本文将详细探讨如何在ASP.NET环境中结合jQuery Uploadify实现文件和图片的批量上传。 ...

    asp.net中ajax基本demo

    这个“asp.net中ajax基本demo”应该是提供了一个简单的示例,演示了如何在ASP.NET环境中使用Ajax进行异步数据操作,如增、删、改、查。下面我们将深入探讨相关的知识点。 首先,让我们了解Ajax的核心概念。Ajax...

    vue+asp.net 小demo

    - 部署时,可以使用Vue.js的构建工具(如Vue CLI)对应用进行编译和优化,生成生产环境的静态文件,然后将这些文件部署到ASP.NET服务器上。 - 利用ASP.NET的缓存机制,可以提高API的响应速度,减少不必要的数据库...

    ASP.NET2.0 Ajax组件DEMO(asp.net超级完整,中文版)

    在这个"ASP.NET2.0 Ajax组件DEMO"中,我们重点关注的是使用Ajax技术来提升用户体验的部分。Ajax,即Asynchronous JavaScript and XML,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,它可以实现...

    Asp.net AjaxDemo

    虽然Asp.net AJAX提供了丰富的功能,但开发者也可以选择使用jQuery或其他JavaScript库来实现AJAX功能。通过ScriptManager的RegisterStartupScript或RegisterClientScriptBlock方法,可以将这些库引入到ASP.NET页面中...

    ASP.NET实现异步上传文件Demo

    在ASP.NET中,我们通常使用ASP.NET AJAX控件工具包或jQuery库中的FileUpload插件来实现异步上传。在这个UploadDemo中,可能是通过创建一个隐藏的iframe,配合JavaScript或jQuery的Ajax功能来处理文件上传的异步操作...

    Asp.Net MVC之jQuery与AJAX操作实例

    在Asp.Net MVC中,使用jQuery和AJAX进行文件上传需要额外的插件,如jQuery Form Plugin。这个插件可以处理表单提交,包括文件上传。 七、异常处理和验证 在AJAX请求中,我们可以利用ASP.NET MVC的Validation ...

    ASP.NET 带进度条上传 DEMO

    "ASP.NET 带进度条上传 DEMO"是一个实例,演示了如何在ASP.NET环境中实现在上传大文件时显示进度条,为用户提供更好的交互体验。 首先,文件上传在ASP.NET中通常通过HttpPostedFileBase对象来处理。在表单中,我们...

    Ajax分页 Asp.net 分页

    在Asp.net中,我们可以使用多种方式实现Ajax分页,如jQuery的Ajax功能、ASP.NET AJAX Control Toolkit中的Paging控件,或者自定义Ajax分页组件。这里我们将主要讨论使用jQuery Ajax和Asp.net MVC或Web Forms的方式。...

    ASP.NET - AJAX SlideShowExtender扩展控件 Demo

    此Demo旨在展示如何利用SlideShowExtender控件在ASP.NET AJAX环境中创建一个功能完备的相册播放器。 首先,ASP.NET AJAX是微软提供的一个框架,它扩展了ASP.NET,引入了异步处理机制,使得Web应用程序可以像桌面...

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

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

    asp.net 批量上传图片demo

    本示例“asp.net 批量上传图片demo”是基于.NET框架3.5开发的一个实例,它实现了用户可以一次性上传多张图片,并且在上传过程中提供图片预览功能,还特别强调了对大图上传的支持。以下将详细讲解这个知识点。 1. **...

    asp.net MVC 文章管理系统demo

    在这个"文章管理系统demo"中,我们可以深入理解ASP.NET MVC的核心概念和技术。它是一个Content Management System(CMS)的示例,展示了如何利用MVC模式来管理文章数据。 1. **MVC模式**:MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics