首页 > 教程 > 关键词  > HTML5文件最新资讯  > 正文

HTML5文件实现拖拽上传

2010-09-09 10:54 · 稿源:caonidayecnblogs,www.cnblogs.com/caonidayecnblogs/

通过HTML的文件API ,Firefox、Chrome等浏览器已经支持从操作系统直接拖拽文件,并上传到服务器。

相对于使用了十多年的HTML表单,这是一个革命性的进步。虽然IE的落后让很多开发者还在观望中,但是Gmail邮箱的附件拖拽功能已经给部分用户带来了极大的方便,而需要大量上传文件的CMS(内容管理系统)也将会从中受益。

让我们看一下Firefox 是如何使用拖拽上传功能的:

首先提供一个区域来放置文件

Html代码

<div name="image" id="dropbox" style="min-width:300px;min-height:100px;border:3px dashed silver;"></div>

然后监听拖拽过程中的dragenter、dragleave、drop等事件

Js代码

document.addEventListener("dragenter", function(e){
dropbox.style.borderColor = 'gray';
}, false);
document.addEventListener("dragleave", function(e){
dropbox.style.borderColor = 'silver';
}, false);
dropbox.addEventListener("dragenter", function(e){
dropbox.style.borderColor = 'gray';
dropbox.style.backgroundColor = 'white';
}, false);
dropbox.addEventListener("dragleave", function(e){
dropbox.style.backgroundColor = 'transparent';
}, false);
dropbox.addEventListener("dragenter", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
dropbox.addEventListener("dragover", function(e){
e.stopPropagation();
e.preventDefault();
}, false);
dropbox.addEventListener("drop", function(e){
e.stopPropagation();
e.preventDefault();

handleFiles(e.dataTransfer.files);

submit.disabled = false;
}, false);

其中最主要的是drop事件中用handleFiles()依次处理所有文件

Js代码

handleFiles = function(files) {
for (var i = 0; i < files.length; i++) {
var file = files[i];

}
}

对于图片类型的文件可以直接读取内容,显示预览图

Js代码

if (!file.type.match(/image*/)) {
continue;
}

var img = document.createElement("img");
img.classList.add("obj");
img.file = file;
preview.appendChild(img);

var reader = new FileReader();
reader.onload = (function(aImg) { return function(e) { aImg.src = e.target.result; }; })(img);
reader.readAsDataURL(file);

接下来就是核心功能:ajax上传。首先新建一个XHR请求

Js代码

var xhr = new XMLHttpRequest();
xhr.open('post', '/file/upload', true);

监听上传进度和完成事件

Js代码

xhr.upload.addEventListener("progress", function(e) {
if (e.lengthComputable) {
var percentage = Math.round((e.loaded * 100) / e.total);
img.style.opacity = 1-percentage/100.0;
}
}, false);

xhr.upload.addEventListener("load", function(e){

}, false);

最后把数据模拟成multipart/form-data的格式上传

Js代码

xhr.setRequestHeader("Content-Type", "multipart/form-data, boundary="+boundary); // simulate a file MIME POST request.
xhr.setRequestHeader("Content-Length", fileSize);

var body = '';
body += "--" + boundary + "\r\n";
body += "Content-Disposition: form-data; name=\""+dropbox.getAttribute('name')+"\"; filename=\"" + fileName + "\"\r\n";
body += "Content-Type: "+fileType+"\r\n\r\n";
body += fileData + "\r\n";
body += "--" + boundary + "--\r\n";

xhr.sendAsBinary(body);

原文地址:https://www.cnblogs.com/caonidayecnblogs/archive/2010/09/09/1821925.html

举报

  • 相关推荐
  • Matrixport CEO John 出席 Foresight 2024 年度峰会,表示Matrixport将持续拥抱合规,提供专业资管服务

    Matrixport CEO John Ge在"Foresight2024"峰会上表示,合规化是加密行业主旋律。他指出当前加密市场缺乏新流量入场,资产管理趋向主流资产集中化,BTC、ETH等占比很高。随着加密ETF通过,合规属性增强,跨圈资管开始复苏。Matrixport将持续拥抱合规,为更多用户提供专业资管服务,帮助用户获取理性收益。公司成立于2019年,是亚洲最大的一站式加密金融服务平台,致力于构建�

  • AI日报:GPT-5-Auto现身Mac客户端;阿里开源WebAgent项目WebShaper;腾讯推X-Omni多模态模型

    【AI日报】今日AI领域重要动态:1)阿里开源WebAgent项目WebShaper,GAIA评测超越Claude4-Sonnet;2)Moonvalley推出草图转视频功能,支持手绘生成电影级视频;3)腾讯X-Omni模型实现图文理解重大突破;4)百度搜索测试AI应用中心入口;5)Midjourney+新增个性化推荐功能;6)GPT-5或于2025年夏季发布;7)Ollama推出桌面客户端;8)OWL团队开源多智能体协作工具Eigent;9)OpenAI年收入激增至120亿美元;10)英伟达H20芯片因安全风险被约谈;11)万兴科技天幕2.0模型国内排名第四,与华为云共建AI视频实验室。

  • RestCloud荣登Gartner 《2025 中国 ICT 技术成熟度曲线》,唯一入选的iPaaS供应商!

    Gartner发布《2025年中国ICT技术成熟度曲线》报告,谷云科技RestCloud作为唯一入选的独立iPaaS厂商上榜API管理领域。报告指出API管理平台能解决企业数字化转型中的数据孤岛问题,通过统一管理API全生命周期,实现跨系统数据实时同步与业务协同。RestCloud平台具备四大核心价值:1)消除数据孤岛,实现全域集成;2)提升开发效率与API复用率;3)保障安全稳定运行;4)结合AI驱动智能化业务创新。该入选标志着国产iPaaS技术已达国际前沿水平,正成为企业数字化转型的核心引擎。

  • 终结“油车不智能”时代!联手奥迪,A5L Sportback首搭华为乾崑智驾

    8月1日,上汽奥迪A5L Sportback正式上市,成为全球首款搭载华为乾崑智驾技术的燃油车。该车融合德系机械底蕴与中国智能科技,配备32个高性能传感器和华为ADS 2.0系统,实现高速、城区、泊车全场景智能驾驶。动力方面搭载第五代EA888发动机(200kW)和quattro四驱系统,百公里加速5.6秒。设计上延续奥迪经典溜背造型,提供六款配置车型,售价25.99万元起。华为乾崑智驾系统已累计辅助驾驶35.41亿公里,泊车辅助超2.3亿次,用户人均辅助驾驶里程达524公里。此次合作标志着传统豪华品牌与智能科技的深度融合,为燃油车智能化发展开辟新路径。

  • 全新奥迪 A5L Sportback 上市,首搭华为乾崑智驾,限时臻享价25.99万元起

    2025年8月1日,上汽奥迪A5L Sportback正式上市,推出六款配置车型,售价25.99万元起。该车是全球首款搭载华为乾崑智驾技术的燃油车,配备32个高性能传感器和激光雷达,支持高速、城区、泊车全场景智能驾驶。动力方面搭载第五代EA888发动机,百公里加速5.6秒,并配备quattro智能四驱系统。新车延续奥迪经典掀背造型,轴距加长提升实用性,内饰采用新一代智能豪华座舱设计。此次上市标志着传统豪华品牌在智能化浪潮下的创新突破,为燃油车市场注入新活力。

  • 手机eSIM开放前兆!vivo WATCH 5全面恢复移动/联通eSIM

    种种迹象表明,国内的eSIM真要开放了。 前不久,OPPO Watch X2系列中国移动eSIM一号双终端业务正式上线,现在vivo也来了。 vivo官微今天发文宣布,vivo WATCH 5 eSIM版已全面恢复开通移动eSIM一号双终端,联通eSIM一号双终端、独立终端。

  • REDMI Turbo 5曝光:全球首发天玑8500

    REDMI预计在今年Q4推出Turbo系列新品REDMI Turbo 5,该机已现身IMEI数据库,其型号为2511FRT34C,它对应的国际版机型是小米POCO X8 Pro,后者型号为2511FPC34G,印度版的POCO X8 Pro型号为2511FPC34I。 作为Turbo系列新成员,REDMI Turbo 5首发搭载联发科天玑8500芯片,这是联发科最强天玑8系处理器。 在去年12月,REDMI Turbo 4首发搭载了天玑8400系列芯片,它采用了旗舰同款全大核架构设计,拥有8个主

  • 52TOYS携潮流IP矩阵亮相美国SDCC漫展 自有IP备受玩家追捧

    2025年7月24-27日,中国潮玩品牌52TOYS携旗下Pouka Pouka、CiCi Lu等原创IP系列亮相全球顶级动漫展圣地亚哥国际动漫展(SDCC),展位人气火爆。同期还参展了东京Wonder Festival夏季展。这是52TOYS首次在海外集中展示自有IP矩阵,其复古毛绒设计等产品获得跨文化消费者的喜爱。自2018年首次参展以来,52TOYS海外业务快速增长,2024年国际收入达1.47亿元,复合增长率超100%。目前品牌已在美国开设首家门店,通过多元场景触达全球消费者,持续推动中国潮玩文化出海。

  • 52TOYS携数十款新品亮相日本东京WF 多元品类深度演绎IP魅力

    7月27日,全球最大规模手办模型展Wonder Festival 2025夏季展在东京盛大开幕,吸引2000余家玩具品牌参展。中国品牌52TOYS携变形机甲、可动人偶等新品惊艳亮相,凭借原创设计和精湛工艺成为全场焦点。这是该品牌连续第八年参展,其核心产品"猛兽匣"系列累计推出近200款SKU,三年GMV超1.9亿,海外市场贡献达5000万。展会期间,52TOYS不仅展示了与日本设计师合作的多款"异形"系列新品,还首发了可实现"三变和平鸽"的创新变形玩具。同期品牌还携全新潮流IP登陆美国圣迭戈漫展,彰显中国原创设计的全球影响力。通过多元产品布局和IP深度开发,52TOYS持续推动"让生活再有趣一点"的品牌理念。

  • 游戏影音双巅峰!三星S95F荣膺T3 Awards 2025“最佳电视”与“最佳游戏电视”

    三星OLED旗舰电视S95F在T3 Awards 2025评选中斩获"最佳电视"和"最佳游戏电视"双料大奖。该产品凭借165Hz超高刷新率、FreeSync Premium Pro技术、NVIDIA G-SYNC兼容等游戏优化配置,以及11mm超薄机身设计获得评审高度评价。搭载新一代AI芯片和Vision AI系统,支持4K影像增强和景深优化技术,配合OLED HDR Pro带来卓越画质表现。防眩光技术和智能音效系统进一步提升了观影体验。评审组认为S95F在游戏和家庭影院场景均展现顶尖性能,标志着三星持续引领显示技术创新的实力。