h5可预览 图片ajax上传 ,后台有点弱不知道数据怎么取,但是可以肯定数据上传成功了
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.box{
height: 200px;
width: 600px;
border: 1px solid black;
margin: 100px auto;
}
.demo img{
height: 100px;
width: 100px;
border: 5px solid #CCCCCC;
}
</style>
</head>
<body>
<div class="box">
<input type="file" name="" id="btn" value="文件上传" multiple="multiple" />
<input type="button" id="btn1" value="ajax提交到服务器" />
<div class="demo"></div>
</div>
<script src="hezhifile.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
//存储所有文件的预览信息
var sumfile = [];
//控件上传
var btn = document.getElementById("btn");
btn.onchange = function(){
var ffs = []
for (var i=0;i<this.files.length;i++) {
ffs[i] = this.files[i]
}
sumfile = sumfile.concat(ffs)
//过滤文件
//var ffs = fileFilter(ffs);
//读取文件
for (var i=0;i<ffs.length;i++) {
(function(i){
var freader = new FileReader();
freader.readAsDataURL(ffs[i],'gbk')
freader.onload = function(){
var result = freader.result;
var img = document.createElement('img');
img.src = result;
document.querySelector('.demo').appendChild(img)
}
})(i)
}
this.value= "";//用自定义按钮来做,原生的太丑了
console.log(sumfile);
}
//过滤文件的函数
function fileFilter(files){
for(var i=0;i<files.length;i++){
if(files[i].size>5000){
alert(files[i].name+'该图片大于5000,上传失败')
files.splice(i,1)
}
}
return files
}
//拖拽上传
var obox = document.querySelector('.box');
obox.ondragover = function(ev){
var ev = ev || event;
ev.preventDefault()
ev.stopPropagation()
}
obox.ondrop = function(ev){
var ev = ev || event;
ev.preventDefault();
var ffs = []
for (var i= 0;i < ev.dataTransfer.files.length;i++) {
ffs[i] = ev.dataTransfer.files[i]
}
//一个拖动多上上传
sumfile = sumfile.concat(ffs);
var freader = new FileReader();
freader.readAsDataURL(ffs[0],'gbk')
freader.onload = function(){
var result = freader.result;
var img = document.createElement('img');
img.src = result;
document.querySelector('.demo').appendChild(img)
}
console.log(sumfile);
}
//ajax 上传
var btn1 = document.querySelector('#btn1');
btn1.onclick = function(){
for(var i=0;i< sumfile.length;i++){
(function(i){
var formData = new FormData();
//formData.append('name',sumfile[i].name)
formData.append("userfile", sumfile[i]);
var xhr = new XMLHttpRequest();
xhr.open('post','01.php',true)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(formData)
xhr.onreadystatechange= function(){
if(xhr.readyState==4&&xhr.status==200){
var result = xhr.responseText;
document.body.innerHTML+=result
}
}
})(i)
}
//取出每个文件一个个上传
}
</script>
</body>
</html>
h5可预览 图片ajax上传 ,后台有点弱不知道数据怎么取,但是可以肯定数据上传成功了的更多相关文章
- h5可预览 图片ajax上传 (补更),后台数据获取方法---php
原理是 先获取,然后手动转移文件路径,不然会被服务器自动删除 demo如下: <?php header('content-Type:text/html;charset=utf-8'); $fil ...
- 微信开发中使用微信JSSDK和使用URL.createObjectURL上传预览图片的不同处理对比
在做微信公众号或者企业微信开发业务应用的时候,我们常常会涉及到图片预览.上传等的处理,往往业务需求不止一张图片,因此相对来说,需要考虑的全面一些,用户还需要对图片进行预览和相应的处理,在开始的时候我使 ...
- 前端预览图片和H5canvas压缩图片上传
思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法得到base64字符串来实现压缩. 1.base64转二进制文件 /** * dataURL to blob, re ...
- 异步上传&预览图片-不压缩图片
本例使用ajaxFileUpload异步上传预览图片 <bean id="multipartResolver" class="org.springframework ...
- hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images
hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- Thinkphp5+plupload图片上传功能,支持实时预览图片。
今天和大家分享一个国外的图片上传插件,这个插件支持分片上传大文件.其中著名的七牛云平台的jssdk就使用了puupload插件,可见这个插件还是相当牛叉的. 这个插件不仅仅支持图片上传,还支持大多数文 ...
- 上传预览图片的插件jquery-fileupload
上传预览图片的插件jquery-fileupload github地址:https://github.com/blueimp/jQuery-File-Upload 中文文档:http://www.jq ...
- 富文本编辑器handyeditor,上传和预览图片的host地址不一样
使用富文本编辑器(官网)时,大多时候都会用到图片上传,但是下载的富文本编辑器的默认配置是只有一个上传地址的host的. var he = HE.getEditor('editor', { autoHe ...
随机推荐
- 开涛spring3(6.6) - AOP 之 6.6 通知参数
前边章节已经介绍了声明通知,但如果想获取被被通知方法参数并传递给通知方法,该如何实现呢?接下来我们将介绍两种获取通知参数的方式. 使用JoinPoint获取:Spring AOP提供使用org.asp ...
- java加密解密研究6、MD算法家族
一.简述 MD5算法是典型的消息摘要算法,其前身有MD2.MD3和MD4算法,它由MD4.MD3和MD2算法改进而来.不论是哪一种MD算法,它们都需 要获得一个随机长度的信息并产生一个123位的信息摘 ...
- CAP原理、一致性模型、BASE理论和ACID特性
CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...
- HTML中部分标签的嵌套问题
书写HTML结构的时候,对于标签的嵌套问题,在我发现这个问题之前,都不在自己的考虑之中,还傻傻的以为标签之间是可以进行百搭的! 其实,有些标签是不能进行随意嵌套,如果你没有深受其害,你是不会发现它的存 ...
- Hadoop化繁为简(二)—层层递进轻松入门hdfs
层层递进-解开hdfs的面纱 1.hdfs是什么?它与普通服务器的文件系统有什么区别?它的特性有什么? 2.hdfs的工作原理是怎样的? 3.每台机器都单独启动有什么弊端?假设有1000台机器需要启动 ...
- 用WebStorm创建Express项目时出现:express version is unavailable
那是因为在npm的配置文件中使用了代理: 方式一:查看配置:npm config list如果有:registry = "https://registry.npm.taobao.org/&q ...
- 初识Tensorboard
1.什么是Tensorboard? PPT设计原则中有这样一条,叫"文不如表,表不如图",可见图表在表达中更为直观.明确.程序设计中也是一样,我们经常用图表来描述程序的结构和流程, ...
- MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)
殊不知,在N年前被奉为"圣经"的数据库设计3范式早就已经不完全适用了.这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用. 由于MySQL数据库是基于行(Ro ...
- shell网络客户端
需要把线上的access日志发送到另一个程序接收 开始想着用python实现,虽然python也有实现类似tail -F的方式,但太麻烦,而且效率也有折扣 偶然发现了shell可以实现网络client ...
- B树和B+树的总结
B树 为什么要B树 磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动.盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写.那么这就存在 ...