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

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

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

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

 $.extend({
AjaxUploadFile:function(url,formData,success,failure){
var oReq = new XMLHttpRequest();
oReq.open( "POST", url , true );
oReq.onload = function(oEvent) {
if (oReq.status == 200)
{
if(typeof success=="function") success(oReq);
}
else
{
if(typeof failure=="function") failure(oReg);
}
};
oReq.send(formData);
}
});

调用:

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

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

 $.extend({
CheckUploadFile:function(jq_input_file){
if(jq_input_file.get(0).files.item(0).size>300*1024)
{
return "文件大于300KB,无法上传";
}
var allow_pic=["jpg","jpeg","png","gif"];
var flag=false;
for(var i in allow_pic)
{
if(jq_input_file.get(0).files.item(0).type.indexOf(allow_pic[i])!=-1)
{
flag=true;
break;
}
}
return flag?"":"指定的文件格式无法上传";
}
});

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. bdev文件系统

    文件系统,是对磁盘数据进行组织和管理的一种机制. 可通过装载,以目录和文件的形式向用户层呈现.但,文件和目录其实只是文件系统的前端而已,只是文件系统的用户视图,其本质还在于这样的一个数据结构:inod ...

  2. Cocos2d-x 截图功能

    2.x-3.x版本                 //获取屏幕尺寸         CCSize size = CCDirector::sharedDirector()->getWinSize ...

  3. TCP报文中的SYN,FIN,ACK,PSH,RST,URG

    TCP的三次握手是怎么进行的:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发 ...

  4. 快速排序Java版

    package Quick; public class quicksort { static class QuickSort { public int data[]; private int part ...

  5. .NET 基础 一步步 一幕幕[面向对象之堆、栈、引用类型、值类型]

    堆.栈.引用类型.值类型 内存分为堆和栈(PS:还有一种是静态存储区域 [内存分为这三种]),值类型的数据存储在栈中,引用类型的数据存储在堆中. 堆.栈: 堆和栈的区别: 栈是编译期间就分配好的内存空 ...

  6. Python小问题汇总

    现在的时间适合写点最近的小总结,这中间涉及到python/git等问题,我就从python先说起吧. 一.Python 1. Python的异常处理 因为想到自己不断尝试写小程序的话会用到抛出异常信息 ...

  7. java基础练习 5

    import java.util.Scanner; public class Fifth { /*输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组.*/ public static ...

  8. Python高手之路【十】python基础之反射

    反射说简单点 --> 就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员. 需求:由用户输入一个模块名,用户输入什么模块名,文件中就导入什么模块: 1:文件都在同一目录下的导 ...

  9. 第一百三十二节,JavaScript,封装库--下拉菜单

    JavaScript,封装库--下拉菜单 封装库,增加了3个方法 shu_biao_yi_ru_yi_chu()方法,给元素设置鼠标移入移出事件,接收两个参数,参数是移入和移出时的执行函数(包含代码) ...

  10. Token注解防止表单的重复提交

    注解的一些基础: 参见http://blog.csdn.net/duo2005duo/article/details/50505884和 http://blog.csdn.net/duo2005duo ...