JavaScript实现拖拽预览,AJAX小文件上传

本地上传,提前预览(图片。视频)

1.html中div标签预览显示。button标签触发上传事件。

<div  id="drop_area" style="border:3px dashed silver;width:200px; height:200px">将图片拖拽到此</div>
<button onclick="xhr2()">ajax上传</button>

2.禁止浏览器打开文件行为

document.addEventListener("drop",function(e){  //拖离
	e.preventDefault();
})
document.addEventListener("dragleave",function(e){  //拖后放
	e.preventDefault();
})
document.addEventListener("dragenter",function(e){  //拖进
	e.preventDefault();
})
document.addEventListener("dragover",function(e){  //拖来拖去
	e.preventDefault();
})

3.拖拽,预览文件

var box = document.getElementById('drop_area'); //拖拽区域
box.addEventListener("drop",function(e){
	var fileList = e.dataTransfer.files; //获取文件对象
	//检測是否是拖拽文件到页面的操作
	if(fileList.length == 0){
		return false;
	}
	//拖拉图片到浏览器,能够实现预览功能
	//规定视频格式
	Array.prototype.S=String.fromCharCode(2);
	Array.prototype.in_array=function(e){
		var r=new RegExp(this.S+e+this.S);
		return (r.test(this.S+this.join(this.S)+this.S));
	};
	var video_type=["video/mp4","video/ogg"];

	//创建一个url连接,供src属性引用
	var fileurl = window.URL.createObjectURL(fileList[0]);
	if(fileList[0].type.indexOf('image') === 0){  //假设是图片
		var str="<img width='200px' height='200px' src='"+fileurl+"'>";
		document.getElementById('drop_area').innerHTML=str;
	}else if(video_type.in_array(fileList[0].type)){   //假设是规定格式内的视频
		var str="<video width='200px' height='200px' controls='controls' src='"+fileurl+"'></video>";
		document.getElementById('drop_area').innerHTML=str;
	}else{ //其它格式。输出文件名称
		//alert("不预览");
		var str="文件名称字:"+fileList[0].name;
		document.getElementById('drop_area').innerHTML=str;
	}
	resultfile = fileList[0];
},false);

4.ajax上传

function xhr2(){
	var xhr = new XMLHttpRequest();//第一步
	//新建一个FormData对象
	var formData = new FormData(); //++++++++++
	//追加文件数据
	formData.append('file', resultfile);
	//post方式
	xhr.open('POST', 'xhr2.php'); //第二步骤
	//发送请求
	xhr.send(formData);  //第三步骤
	//ajax返回
	xhr.onreadystatechange = function(){ //第四步
    if ( xhr.readyState == 4 && xhr.status == 200 ) {
      console.log( xhr.responseText );
    }
  };
	//设置超时时间
	xhr.timeout = 10000;
	xhr.ontimeout = function(event){
    alert('请求超时。');
  }
}

5.php保存文件

<?

php
	print_r($_FILES["file"]);
	$name = $_FILES["file"]["name"]; //中文可能乱码使用iconv函数
	move_uploaded_file($_FILES["file"]["tmp_name"],iconv("UTF-8","gb2312",$name));
?>
时间: 2024-10-08 09:29:49

JavaScript实现拖拽预览,AJAX小文件上传的相关文章

7 款基于 JavaScript/AJAX 的文件上传插件

本文整理了7款基于JavaScript和AJAX的文件上传插件,这些插件基本上都能实现以下功能: 多文件上传 拖拽操作 实时上传进度 自定义上传限制 希望能为你的开发工作带来帮助. 1.  jQuery File Upload 具有多文件上传.拖拽.进度条和图像预览功能的文件上传插件,支持跨域.分块.暂停恢复和客户端图像缩放.可与任何服务端平台(如PHP.Python.Ruby on Rails.Java.Node.js.Go等)一起使用,支持标准的HTML表单文件上传. 2.  Pixelco

图片预览 base64 element 图片上传 预览图

https://www.jianshu.com/p/bee8c393c422 感谢 使用了element ui,愿望是   选择图片文件之后,不立即上传,先显示预览图,点击上传按钮之后再上传,element版本是2.13 用到了 URL.createObjectURL(file.raw) html <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/&

iOS多线程与网络开发之小文件上传

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.文件上传 思路: 发送文件数据给server 使用post请求 必须手动设置请求头: 内

ajax+spring文件上传

1.js代码 $(function(){ $('#upfileID').change(function(){ $.ajaxFileUpload({ url: '/upload/image', type: 'post', secureuri: false, //一般设置为false fileElementId: 'upfileID', // 上传文件的id属性名 dataType: 'text', //返回值类型,一般设置为json.application/json success: functi

ajax提交表单、ajax实现文件上传

ajax提交表单.ajax实现文件上传,有需要的朋友可以参考下. 方式一:利用from表单的targer属性 + 隐藏的iframe 达到类似效果, 支持提交含有文件和普通数据的复杂表单 方式二:使用jquery的$.ajax({..}), 支持提交普通表单,但不支持含有文件的复杂表单; ($.post 或 $.get底层用的都是$.ajax) 方式三:使用jquery插件ajaxFileUpload.js, 支持上传文件,但不支持提交表单 方式四:使用jquery.from.js,支持提交同时

基于jsp的AJAX多文件上传的实现

最近的项目开发中,遇到了一个多文件上传的问题,即在不刷新页面的情况下,上传多个文件至服务器.现总结分享如下: 本文主要采用了基于jsp的ajax,jquery,servlet等技术. 1.upload.jsp 点击上传时,调用对应的fileupload函数,通过ajax将文件异步传送到servlet中处理.注意在文件上载时,所使用的编码类型应当是"multipart/form-data",它既可以发送文本数据,也支持二进制数据上载. <%@ page language="

基于jquery的Ajax实现 文件上传

---------------------------------------------------------------遇到困难的时候,勇敢一点,找同学朋友帮忙,找导师求助. Ajax Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据). 同步交互:客户端发出一个请

AJAX与文件上传

一.ajax ajax(Asynchronous JavaScript And XML):异步JavaScript和XML,即使用JavaScript语句与服务器进行异步交互,传输的数据为XML(也可以是json数据).实际上就是在JavaScript语句里用ajax可以向服务器发送请求. 两大特点: 1,异步交互 2,页面局部刷新 语法: 基于jQuery:<script>$('.cc').click(function(){ #当我们点击'.cc'这个类的时候就会触发ajax请求 $.aja

[iOS 多线程 &amp; 网络 - 2.5] - 小文件上传

A.文件上传 思路: 发送文件数据给服务器 使用post请求 必须手动设置请求头: 内容大小Content-Length & 内容类型 Content-Type 请求体:文件数据 文件上传的格式要求十分严格,必须严格遵守 由于是一次性加载文件到内存上传,所以只能用于小文件上传 B.实现 1.设置POST请求 (1)使用POST请求方法 (2)设置请求头 设置内容长度.内容类型.分割线 (3)设置请求体 NSMutableData *body = [NSMutableData data]; 分割线