注意啦:本文的代码都是以JQuery为示例,jq_开头的变量都是jq对象。

在HTML5中,我们可以在图片上传之前对图片进行预览,就像下面这么做

  1. jq_upload_file.change(function(){
  2. jq_img.attr("src",window.URL.createObjectURL(this.files.item(0)));
  3. jq_div.css("backgroundImage","url("+window.URL.createObjectURL(this.files.item(0))+")");
  4. });//end change

那么异步上传文件,就只需要利用HTML5中的FormData,也就是这样:

  1. $.extend({
  2. AjaxUploadFile:function(url,formData,success,failure){
  3. var oReq = new XMLHttpRequest();
  4. oReq.open( "POST", url , true );
  5. oReq.onload = function(oEvent) {
  6. if (oReq.status == 200)
  7. {
  8. if(typeof success=="function") success(oReq);
  9. }
  10. else
  11. {
  12. if(typeof failure=="function") failure(oReg);
  13. }
  14. };
  15. oReq.send(formData);
  16. }
  17. });

调用:

  1. var form=new FormData();
  2. form.append("pic",jq_upload_file.get(0).files[0]);
  3. //关于这里,其他文章有提到,可以直接传个DOM节点进去,即form.append("pic",jq_upload_file.get(0))
  4. //另外,对于FormData可以将整个表单form的节点传入,形成一个完整的FormData,即var form=new FormData(jq_form.get(0))
  5. $.AjaxUploadFile(
  6. "上传的URL",
  7. form,
  8. function(oReq){
  9. //处理oReq.responseText
  10. }
  11. );

当然,上传之前,可能需要先验证一下文件大小、类型等等:

  1. $.extend({
  2. CheckUploadFile:function(jq_input_file){
  3. if(jq_input_file.get(0).files.item(0).size>300*1024)
  4. {
  5. return "文件大于300KB,无法上传";
  6. }
  7. var allow_pic=["jpg","jpeg","png","gif"];
  8. var flag=false;
  9. for(var i in allow_pic)
  10. {
  11. if(jq_input_file.get(0).files.item(0).type.indexOf(allow_pic[i])!=-1)
  12. {
  13. flag=true;
  14. break;
  15. }
  16. }
  17. return flag?"":"指定的文件格式无法上传";
  18. }
  19. });

HTML5预览图片、异步上传文件的更多相关文章

  1. jQuery + ashx 实现图片按比例预览、异步上传及显示

    目录(?)[-] 注ajax 方式异步读取数据库显示图片的方法同上传一致使用 ashx 返回base64字符串在客户端处理即可 记录一个让我纠结良久的问题 在Page_Load 函数中只有第一个用 S ...

  2. 7月3日 Django 头像预览、用户上传文件操作、logging、debug_tool_bar

    1. 注册功能 1. 头像预览 //头像预览 $('#id_avatar').change(function () { console.log(this.files[0]) //找到选中的头像文件 v ...

  3. h5可预览 图片ajax上传 ,后台有点弱不知道数据怎么取,但是可以肯定数据上传成功了

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. php ajax bootstrap多文件上传图片预览,ajax上传文件

    <form enctype="multipart/form-data" id="upForm"> <label class="btn ...

  5. h5可预览 图片ajax上传 (补更),后台数据获取方法---php

    原理是 先获取,然后手动转移文件路径,不然会被服务器自动删除 demo如下: <?php header('content-Type:text/html;charset=utf-8'); $fil ...

  6. HTML5 jQuery+FormData 异步上传文件,带进度条

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href ...

  7. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  8. 关于js异步上传文件

    好久没登录博客园了,今天来一发分享. 最近项目里有个需求,上传文件(好吧,这种需求很常见,这也不是第一次遇到了).当时第一想法就是直接用form表单提交(原谅我以前就是这么干的),不过表单里不仅有文件 ...

  9. ajax异步上传文件FormDate方式,html支持才可使用

    今天需要做一个头像的预览功能,所以我想到了异步上传文件. 总结几点: 异步上传难点: 文件二进制流如何获取 是否需要设置表单的头,就是content-Type那里.异步,所以无所谓了吧. 其他就差不多 ...

随机推荐

  1. 数据库中的null问题

    在数据库中有些列的值可以为null,这一篇,我们围绕数据库中的null来讲述. 1. null与 “”.0的区别   数据库中的null表示——不知道,“”——一个空字符串,0则是一个数值.  所以n ...

  2. 办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo

    办理滑铁卢大学(本科)学历认证『微信171922772』UW学位证成绩单使馆认证University of Waterloo QQ/微信171922772办理毕业证成绩单.真实使馆及教育部学历认证★诚 ...

  3. 浅谈linux读写同步机制RCU

    RCU是linux系统的一种读写同步机制,说到底他也是一种内核同步的手段,本问就RCU概率和实现机制,给出笔者的理解. [RCU概率] 我们先看下内核文档中对RCU的定义: RCU is a sync ...

  4. hdu1040

    #include<stdio.h>#include<stdlib.h>int a[100];int cmp(const void *a,const void *b){ retu ...

  5. noip 2016 提高组总结(不是题解)

    小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...

  6. Erlang虚拟机的启动

    Erlang虚拟机的启动 erl实际上是一个shell脚本,设置几个环境变量之后,调用执行erlexec.erlexec的入口点在 otp_src_R15B01/erts/etc/common/erl ...

  7. Firefox一次提交两次请求的问题

    把这迅雷的插件禁用后一切恢复正常.

  8. 前端知识点-CSS相关知识点

    1.解释一下CSS的盒子模型? 回答一: a.标准的css盒子模型:宽度=内容的宽度+边框的宽度+加上内边具的宽度 b.网页设计中常听的属性名:内容(content).填充(padding).边框(b ...

  9. 来看看CBIS 2017中国(上海)大数据产业创新峰会有哪些大师出席

    CBIS 2017中国(上海)大数据产业创新峰会,围绕"数据+产业.企业+数据.技术+人才.品牌+市场.应用+发展"相继展开话题讨论. CBIS 2017中国(上海)大数据产业创新 ...

  10. linux kernel module

    #include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h> static i ...