怎样用html5实现拖拽上传文件

怎样用html5实现拖拽上传文件,第1张

,首先要判断拖入的文件是否符合要求,包括图片类型、大小等,然后获取本地图片信息,实现预览,最后上传。

$(function(){

...接上部分

var box = document.getElementById('drop_area')//拖拽区域

box.addEventListener("drop",function(e){

e.preventDefault()//取消默认浏览器拖拽效果

var fileList = e.dataTransfer.files//获取文件对象

//检测是否是拖拽文件到页面的 *** 作

if(fileList.length == 0){

return false

}

//检测文件是不是图片

if(fileList[0].type.indexOf('image') === -1){

alert("您拖的不是图片!")

return false

}

//拖拉图片到浏览器,可以实现预览功能

var img = window.webkitURL.createObjectURL(fileList[0])

var filename = fileList[0].name//图片名称

var filesize = Math.floor((fileList[0].size)/1024)

if(filesize>500){

alert("上传大小不能超过500K.")

return false

}

var str = "<img src='"+img+"'><p>图片名称:"+filename+"</p><p>大小:"+filesize+"KB</p>"

$("#preview").html(str)

//上传

xhr = new XMLHttpRequest()

xhr.open("post", "upload.php", true)

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")

var fd = new FormData()

fd.append('mypic', fileList[0])

xhr.send(fd)

},false)

})

在HTML5里,从Web网页上访问本地文件系统变的十分的简单,那就是使用File API。这个File规范说明里提供了一个API来表现Web应用里的文件对象,你可以通过编程来选择它们,访问它们的信息。这个File API包括:

一个FileList序列,代表着由本地系统里选中的单个的文件组成的数组。用来选择文件的用户接口可以通过<input type=”file”>调用实现。

一个Blob接口,它代表原始二进制数据,通过Blob对象你可以访问里面的字节数据。

一个File接口,它里面存有文件的只读属性信息,像文件名,文件类型,文件数据访问的地址。

一个FileReader接口,它提供了读取一个文件的方法,和一个获取文件读取结果的事件模型。

一个FileError接口和一个FileException对象,它们用来定义这个规范中的错误产生条件。

如何使用这个例子:在这个例子中,我给出了一个画板,你可以从本地文件系统里拖拽进去一个图片,或者你也可以用文件选择框来选择图片。例子中,请只选择图片文件,我并没有添加文件过滤和文件类型检查。请记住,没有一个浏览器完全实现了HTML5,这个例子需要在支持HTML5的浏览器上运行,比如Firefox3.5以上。 

实现File API的主要方法非常的简单,就像下面:

function imagesSelected(myFiles) { 

for (var i = 0, f f = myFiles[i] i++) { 

var imageReader = new FileReader() 

imageReader.onload = (function(aFile) { 

return function(e) { 

var span = document.createElement(‘span‘) 

span.innerHTML = ['<img class="images" src="', e.target.result,'" title="', aFile.name, '"/>'].join(”) 

document.getElementById(‘thumbs’).insertBefore(span, null) 

})(f) 

imageReader.readAsDataURL(f) 

function dropIt(e) { 

imagesSelected(e.dataTransfer.files) 

e.stopPropagation() 

e.preventDefault() 

}

选择在<td>上放置ondrop事件:

<td align=”left” height=”105″ ondragenter=”return false” ondragover=”return false” ondrop=”dropIt(event)”> 

<output id=”thumbs”></output> 

</td>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6217017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存