今天在这里介绍一下ajax上传文件。其实也不算是真的使用xmlhttprequest上传,只是使用了iframe实现了无刷新上传而已,最多也只算是仿ajax上传文件。然而网上关于使用xmlhttprequest上传文件的却是少之又少。即使有,对其他浏览器的兼容也是不敢恭维。到是有专门的公司提供这样的解决方案,如:ajaxuploader.com提供各式各样的ajax上传方式。呵呵,只是它不是开源而且是针对.net平台的。废话少说了,我们今天就使用jquery+iframe来实现无刷新上传。以下是解决方案图:

(图1)

下面是上传完的界面:

接下来看一下主要代码:

1、在default.aspx页面,先引用jquery及其插件:

<script type="text/javascript" src="scripts/jquery.js"></script>
 <script type="text/javascript" src="scripts/interface.js"></script>

2、接着我们来看一下default.aspx页面的jquery代码,注解已经都在里面的,相信只要会jquery都能看得懂,我就不再啰嗦了。

Code<script type="text/javascript">$(document).ready(function(){
             uploadcreate($(
"#uploadbox"));
        });
varhideDiv=function(idName){
             $(
"#"+idName).fadeOut("fast");
         };
//载入中的GIF动画varloadingUrl="images/ajax-loader.gif";//选择文件后的事件,iframe里面调用的varuploading=function(imgsrc){varel=$("#uploading");
            $(
"#ifUpload").fadeOut("fast");
            el.fadeIn(
"fast");
            el.html(
"<img src='"+loadingUrl+"' align='absmiddle' /> 上传中");returnel;
        };
//重新上传方法varuploadinit=function(){
            $(
"#uploading").fadeOut("fast",function(){
                 $(
"#ifUpload").fadeIn("fast");
            });
                   
        };
//上传时程序发生错误时,给提示,并返回上传状态varuploaderror=function(){
            alert(
"程序异常,上传未成功。");
            uploadinit();
        };
//上传成功后的处理varuploadsuccess=function(newpath){
            $(
"#txtContent").append("<img src=\""+newpath+"\"οnlοad=\"if(this.width>300){this.width=300;}\"/>");varel=$("#uploading");
            el.html(
"上传成功,<a href=\"javascript:void(0);\"οnclick=\"uploadinit();\">[重新上传]</a>.");
        };
//创建一个上传控件varuploadcreate=function(el){varstrContent="<div class='uploadcontrol'><iframe src=\"upload.aspx\"id=\"ifUpload\"frameborder=\"no\"scrolling=\"no\"style=\"width:400px; height:28px;\"></iframe>";
            strContent
+="<div class=\"uploading\"id=\"uploading\"style=\"display:none;\"></div>";
            strContent
+="<div class=\"image\"id=\"panelViewPic\"style=\"display:none;\"></div></div>";
            el.append(strContent);
        };
</script>

3、再来看一下upload.aspx页面都有哪些东西。

Code<script type="text/javascript">varuploadSelect=function(el){
            el.fadeOut(
"show");        
            parent.uploading(document.getElementById(
"file1").value);
            $(
"#frmUpload").submit();
        };
</script>

当然在这个页面你也得做第一步该做的事,谁叫我们都用上了jquery呢,呵呵。

4、upload.aspx页面元素都有哪些呢?

Code<formrunat="server"id="frmUpload"method="post"enctype="multipart/form-data"><inputtype="file"runat="server"id="file1"size="40"onchange="uploadSelect($(this));"/></form>

记住一定要给form的method、enctype属性分别赋上"post"、"multipart/form-data",这样才能保证upload.aspx.cs里面可以获取到上传的文件信息。

5、最后看一下upload.aspx.cs代码,都是些上传文件的代码,我只贴出部分的主要代码。

CodestringpicPath="";stringpicServer="upload";protectedvoidPage_Load(objectsender, EventArgs e)
    {
if(IsPostBack)
        {
            picPath
=Server.MapPath("~/upload");
            doUpload();
        }
    }
protectedvoiddoUpload()
    {
try{
            HttpPostedFile file
=file1.PostedFile;stringstrNewPath=GetSaveFilePath()+GetExtension(file.FileName);
            file.SaveAs(picPath
+strNewPath);stringurlPath=picServer+strNewPath;
            urlPath
=urlPath.Replace("\\","/");
            WriteJs(
"parent.uploadsuccess('"+urlPath+"');");
            
        }
catch(Exception ex)
        {
            WriteJs(
"parent.uploaderror();");            
        }
    }

WriteJs方法为:

CodeprotectedvoidWriteJs(stringjsContent)
    {
this.Page.RegisterStartupScript("writejs","<script type='text/javascript'>"+jsContent+"</script>");
    }

好了!至此,整个例子就都完成了。

可能逻辑上讲得不是很好,请大家多多谅解啊!

转载于:https://www.cnblogs.com/JackLee_2008/archive/2008/12/15/1355001.html

.net ajax式上传文件相关推荐

  1. java获取ajax上传的文件,Java使用Ajax异步上传文件

    相关代码示例: html代码片段: 名称 class="layui-input"> 描述 文件 请选择配置文件 立即提交 重置 js代码片段: //上传配置文件 $(&quo ...

  2. jquery ajax java上传文件_jQuery Ajax方式上传文件的方法

    jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...

  3. php ajax xmlhttpreq 上传文件 get,使用Ajax XmlHttpRequest上传文件

    使用Ajax XmlHttpRequest上传文件 嗨,我正在尝试使用此代码发送带有xmlhttprequest的文件. var url= "http://localhost:80/.... ...

  4. ajax 上传文件实例,Ajax异步上传文件实例代码分享

    非常不多说,直接给大家上干货,写的不好还请见谅. 具体代码如下所示: Index $(function() { $(':button').click(function () { var formDat ...

  5. koa2:通过Ajax方式上传文件,使用FormData进行Ajax请求

    koa2通过表单上传的网上很多,但通过Ajax方式上传文件,使用FormData进行Ajax请求,不好找. 参考了这个用base64上传图片的例子.https://github.com/Yuki-Mi ...

  6. ashx获取input file 文件_通过Ajax方式上传文件(input file),使用FormData进行Ajax请求...

    一直以来上传文件都使用的是别人的组件,今天看下无刷新上传内部具体的做法.上传文件可以使用form的形式来上传,也可以通过构造formData使用ajax来上传文件: 上传图片 $(function ( ...

  7. ajax异步上传什么意思,使用 jQuery 的 AJAX 异步上传文件

    现在基本上很多网页里面都在使用 jQuery,要实现文件的异步上传,大多数的解决方法都是使用 jQuery 插件,如果你只是上传一张图片,使用插件反而觉得多余了,其实 jQuery 的 ajax() ...

  8. ajax怎么上传文件?注意事项

    ajax,即异步处理,相信程序员朋友们都会感觉到亲切吧,因为ajax在软件开发过程中实在是太常用了,还是有不少刚刚入门想学习软件开发的朋友可能不是很熟悉如何使用ajax,今天就一起来看看吧,怎样使用a ...

  9. Ajax方式上传文件报错Uncaught TypeError: Illegal invocation

    今天使用ajax上传文件时,出现了错误.数据传输的方式是通过定义formData完成的,提交的文件对象也设置为dom对象,但是还是不能发送请求.F12看到后台报了个错误:Uncaught TypeEr ...

最新文章

  1. SpringBoot-JPA入门
  2. 肠菌亦“醉”人 | 中国团队登Cell子刊,发现60%的非酒精性脂肪肝与肠道菌有关,携带者体内酒精可达健康人4-6倍...
  3. 电脑粉碎文件 c语言,文件操作(二):文件粉碎机
  4. matlab数据接口技术,实战MATLAB之文件与数据接口技术
  5. python中copy模块的使用,深拷贝和浅拷贝
  6. linux mysql进阶_mysql进阶学习二之搭建主从
  7. ( ̄▽ ̄) 关于河北ETC记账卡的默认密码
  8. a标签 vue 动态点击_vue基础那点事
  9. php mysql销售_计算用于销售应用程序的php / mysql中的损益(每日,每月和每年)...
  10. 4.GitLab 邮件配置
  11. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点...
  12. realtek audio console无法连接rpc服务_笔记本网络连接图标不见了怎么办?
  13. java 校验银行卡号_Java + OpenCV 实现银行卡号识别 (3)
  14. iOS YYKit理解
  15. 目标客户画像_数据运营实战(一):细分目标人群,结合用户画像的实践
  16. 20190919-6 四则运算试题生成
  17. ultrascale和arm区别_ZYNQ UltraScale+ MPSoc FPGA初学笔记
  18. 罗马数字到底是怎么组成的(内容详细)
  19. python运维工程师前景_IT运维工程师发展前景如何
  20. 最火的python视频_超火Python400集视频,116-248集思维导图视频介绍(第二季)

热门文章

  1. 在Win7 64位注册ActiveX控件
  2. mysql建立的一个自动更新组织树案案例
  3. 洛谷 4568 [JLOI2011] 飞行路线
  4. 在windows下安装flex和bison、GCC
  5. python_day02 上节课知识点回顾
  6. 配置toad远程连接oracle
  7. 【转载】Gradle学习 第十一章:使用Gradle命令行
  8. mysql数据库操作语句大全
  9. Ext JS 4.1.1 RC2发布
  10. java hashmap 缓存