html5传文件实现_FormData与File API上传文件【方法】

HTML5文件上传支持单/多文件、带字段及进度监控,核心方案为FormData配合XMLHttpRequest或Fetch,辅以FileReader预览、客户端校验等增强功能。

html5传文件实现_formdata与file api上传文件【方法】

如果您需要在网页中实现文件上传功能,HTML5 提供了 FormData 与 File API 的组合方案,可支持单文件、多文件、带其他表单字段的异步上传。以下是几种具体实现方法:

一、使用 FormData + XMLHttpRequest 上传单个文件

该方法利用原生 XMLHttpRequest 发送包含文件的 FormData 对象,适用于对兼容性有明确控制且无需第三方库的场景。

1、在 HTML 中添加一个 type=”file” 的 input 元素,并设置 multiple 属性为 false(默认)以限制单选。

2、监听 input 的 change 事件,通过 event.target.files[0] 获取第一个 File 对象。

立即学习“前端免费学习笔记(深入)”;

3、创建 FormData 实例,调用 append 方法添加文件字段,例如 form.append(‘file’, fileInput.files[0], fileInput.files[0].name)。

4、创建 XMLHttpRequest 实例,设置 onreadystatechange 回调,在 readyState === 4 且 status 在 200–299 范围内处理响应。

5、调用 xhr.open(‘POST’, ‘/upload’) 并执行 xhr.send(form)。

二、使用 FormData + Fetch API 上传多个文件

Fetch API 提供更简洁的 Promise 风格接口,配合 FormData 可自然支持多文件上传,每个文件作为独立条目追加至 FormData。

1、在 HTML 中使用 元素,并绑定 change 事件监听器。

2、在事件处理器中遍历 event.target.files,对每个 File 对象调用 form.append(‘files’, file, file.name) —— 注意字段名保持一致以便后端统一接收数组。

3、调用 fetch(‘/upload’, { method: ‘POST’, body: form }) 发起请求。

4、使用 .then() 处理 Response,调用 response.json() 或 response.text() 解析返回内容。

5、在 catch 块中捕获网络错误或 4xx/5xx 响应,注意:Fetch 不会因 HTTP 状态码异常而 reject,需手动检查 response.ok

三、使用 FileReader 预览本地文件并上传

FileReader 可在上传前读取文件内容(如图片 Base64),实现客户端预览,同时仍通过 FormData 提交原始二进制数据。

1、为 input[type=”file”] 添加 change 监听,获取 files[0]。

2、若为图片文件,创建 new FileReader() 实例,绑定 onload 事件,在其中将 e.target.result 赋值给 html5传文件实现_FormData与File API上传文件【方法】 元素的 src 属性实现预览。

3、在 FileReader 的 onload 事件完成之后,再构造 FormData 并 append 同一 file 对象,确保上传的是原始文件而非 Base64 字符串。

4、使用 XMLHttpRequest 或 Fetch 发送 FormData,切勿将 FileReader 的 result(字符串)作为文件内容 append 到 FormData

四、上传时携带额外字段与进度监控

FormData 支持同时附加文本字段与文件字段,结合 XMLHttpRequest.upload.onprogress 可实时反馈上传进度。

1、创建 FormData 实例后,依次调用 form.append(‘username’, ‘alice’)、form.append(‘description’, ‘test upload’) 等添加非文件字段。

2、继续调用 form.append(‘file’, fileInput.files[0]) 添加文件字段。

3、创建 XMLHttpRequest 实例,监听 xhr.upload.onprogress 事件,从 event.loaded 和 event.total 计算百分比。

4、将计算出的进度值更新至页面中的 元素或自定义进度条 DOM 节点。

5、注意:onprogress 仅在 xhr.upload 上可用,xhr.onprogress 无效且不触发

五、处理文件类型与大小校验(客户端前置过滤)

在文件进入上传流程前,可通过 File API 的属性进行轻量级校验,避免无效请求消耗服务端资源。

1、从 event.target.files 获取 FileList 后,遍历每个 File 对象。

2、检查 file.type 是否匹配允许的 MIME 类型,例如 file.type.startsWith(‘image/’) 或精确比对 ‘application/pdf’。

3、检查 file.size 是否小于设定阈值(如 5 * 1024 * 1024 表示 5MB),注意:size 单位为字节,且无法通过 JS 修改

4、对不满足条件的文件,调用 alert 或向用户展示提示信息,并跳过 append 操作。

5、若所有文件均校验失败,则阻止后续上传逻辑执行,该校验不可替代服务端验证,仅作用户体验优化

以上就是html5传文件实现_FormData与File API上传文件【方法】的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1606521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
html如何使图片横铺_设置HTML背景图片横向平铺【平铺】
上一篇 2025年12月23日 19:51:59
html5如何禁用缓存_HTML5禁用缓存设置与缓存清除方法【教程】
下一篇 2025年12月23日 19:52:12

相关推荐

  • vivo X300系列影像配置曝光:200MP主摄+双50MP镜头

    vivo X300系列影像配置曝光:200MP主摄+双50MP镜头vivo X300系列影像配置曝光:200MP主摄+双50MP镜头vivo X300系列影像配置曝光:200MP主摄+双50MP镜头vivo X300系列影像配置曝光:200MP主摄+双50MP镜头

    7月14日,有网友在社交平台上透露了关于vivo x300系列的相机规格信息。据称,该系列将配备2亿像素主摄搭配两颗5000万像素镜头。 vivo智能手机 据CNMO了解,vivo X300系列不再推出Pro mini版本,而是包括vivo X300、vivo X300 Pro与vivo X300 …

    2026年8月29日 用户投稿
    100
  • 抖音禁言无期限怎么办?抖音禁言无期限怎么办解除

    在抖音这个充满活力的社交平台上,许多用户都在用心创作内容、分享生活,但有时却因操作不当或触碰规则而遭遇账号被禁言的困扰。尤其是面对“无期限禁言”这种情况,很多人会感到无助和焦虑:抖音禁言无期限怎么办?别慌,本文将为你详细解析应对策略,助你找到出路! 一、先查清禁言原因 任何处罚都不是空穴来风,抖音的…

    2026年8月29日
    000
  • 芯原推出低功耗AI降噪与AI超分辨率系列IP

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 芯原股份推出全新AI图像处理IP系列,赋能高清影像时代 2025年2月27日,上海——芯原股份(芯原,股票代码:688521.SH)今日宣布推出其最新一代AI图像处理IP系列,包括智能降噪IP …

    2026年8月29日
    000
  • 铁路12306APP如何通过申请办理团体票_团体票申请流程与注意事项

    学生和务工人员可通过12306 APP在开车前第17天预约团体票,每单最多9人,系统于第16天配票并需当日23:00前支付;旅行社须先完成资质审核,通过旅团网站提交需求,在规定时间内确认支付并最晚于开车前5天录入旅客实名信息,所有流程均需严格遵守时间节点,否则订单失效。 铁路12306 APP目前不…

    2026年8月29日
    100
  • 京东白条的分期付款可以用吗?京东白条的分期付款可以用吗安全吗

    京东白条分期是否可用需先确认账户是否开通该功能,再检查交易场景是否支持;其安全性由加密传输、实名验证、安全锁及异常赔付等机制保障。 如果您在京东购物时考虑使用白条进行分期付款,但对它的可用性和安全性存在疑问,这通常是因为需要确认账户状态、支付场景限制以及资金安全机制。以下是关于京东白条分期付款是否可…

    2026年8月29日
    100
  • Soul视频通话卡顿怎么解决_Soul视频通话卡顿处理

    网络不稳定是Soul视频通话卡顿主因,应切换至稳定Wi-Fi或5G、重启网络设备并开启低延迟模式;2. 调整Soul设置为标清画质、关闭美颜特效并确认权限;3. 关闭后台应用、重启设备并确保存储充足;4. 更新Soul应用及iOS系统至最新版本以优化性能。 如果您在使用Soul进行视频通话时遇到卡顿…

    2026年8月29日
    000
  • win11怎么设置默认应用_Win11更改文件类型默认打开方式教程

    首先更改文件类型的默认打开方式,可通过设置应用按文件类型、协议或特定应用批量指定,默认应用可在“设置”>“应用”>“默认应用”中配置,也可通过右键菜单快速更改并勾选始终使用。 如果您尝试打开某个文件类型,但系统使用了错误的应用程序,则需要更改该文件类型的默认打开方式。以下是解决此问题的步…

    2026年8月29日
    000
  • 京东外卖店铺收藏在哪里看?京东外卖店铺装修图片

    首先打开京东App,进入“我的”页面点击“商品收藏”,选择“店铺”标签即可查看所有收藏的店铺;在顶部搜索框输入关键词可快速查找目标店铺;向左滑动店铺条目或长按进入多选模式,可取消或批量删除收藏,便于管理。 如果您在京东外卖中收藏了店铺,但不确定如何查看这些收藏的店铺信息,可以通过以下方法进行查找和管…

    2026年8月29日
    200
  • 天猫怎么看信誉度?天猫怎么看信誉度等级

    可通过查看店铺动态评分、商品评价及店铺星级判断天猫卖家可靠性。首先查看“描述相符”“服务态度”“物流服务”三项评分,高于行业均值为佳;其次浏览商品评价区,重点关注中差评内容及卖家回复情况,判断售后服务态度;最后留意店铺名称旁的星级标识,优先选择四星及以上店铺,综合三项指标可有效评估卖家信誉水平。 如…

    2026年8月29日
    000
  • 番茄小说怎么备份书架数据_番茄小说备份书架数据操作指南

    1、通过账号同步功能可实现书架数据自动备份,登录同一账号即可在多设备间同步;2、手动导出书架清单至文档并保存至云盘,便于记录与分享阅读内容;3、截图保存书架页面并整理至相册,结合iCloud同步确保数据不丢失。 如果您希望将番茄小说中的书架内容进行备份,以防止数据丢失或在更换设备时能够快速恢复,可以…

    2026年8月29日
    000
  • 拼多多商家能取消订单吗?拼多多商家能取消退款吗

    答案:拼多多商家取消订单需根据状态选择处理方式。未发货订单可在工作台或APP操作取消;已发货订单须拦截物流并引导买家退款;退款申请不可强制取消,需协商或举证驳回;特殊场景如恶意下单、系统异常等需平台介入。 如果您作为拼多多商家,因库存、物流等原因需要取消已生成的订单或处理买家发起的退款申请,平台允许…

    2026年8月29日
    000
  • 首款搭载海光4号处理器笔记本,联想开天X7定义信创PC旗舰性能

    北京,2025年7月10日——在今日举行的海光新一代pc处理器发布会上,联想开天作为核心战略合作伙伴,同步发布了一款面向国产信创领域的重磅新品——联想开天x7高性能信创旗舰笔记本。该产品不仅是全球首款配备海光4号处理器的笔记本电脑,更首次在国产笔记本中引入独立npu芯片,标志着国产“信创aipc”迈…

    2026年8月29日
    100
  • 京东白条首单立减60退货了还能用吗?京东白条首单立减退款的话再买会不会没了

    首单立减60元优惠使用后若退货,优惠不可恢复。首次支付成功即视为已用首单资格,即便全额退款也不重置,再次下单无法享受同优惠;整单退款且券有效期内可能返还,过期或标注不可退则不返;用户可通过京东App“我的优惠券”查看状态,无首单立减券即为失效。 如果您在使用京东白条进行首次消费时享受了立减60元的优…

    2026年8月29日
    300
  • 平安好车主如何设置常用目的地_平安好车主设置常用目的地详细方法

    打开平安好车主APP,进入“我的”个人中心,点击头像进入信息管理界面,选择“常驻城市”或“常用地址”,新增并保存如“家”“公司”等地点;2. 使用道路救援或代驾服务时,在下单页输入目的地并勾选“保存为常用地址”,提交后系统自动归类,便于下次快速调用。 如果您希望在平安好车主APP中快速选择经常前往的…

    2026年8月29日
    100
  • 拼多多商家能拉黑买家吗?怎么看出商家把我拉黑了

    被拉黑后无法发消息或下单,可通过官方客服申诉、提交证据、避免频繁换号等方式解决。 如果您在与拼多多商家沟通时发现消息无法发送或订单互动受限,可能是已被商家加入黑名单。这种情况通常发生在买卖双方出现纠纷或买家存在异常行为时。 本文运行环境:iPhone 15 Pro,iOS 18 一、商家拉黑买家的操…

    2026年8月29日
    200
  • 手机淘宝店铺设置推荐?手机淘宝店铺设置推荐怎么设置

    提升手机淘宝店铺流量和转化率需优化首页推荐设置。首先进入千牛工作台,通过“店铺装修”进入“手机端首页”找到“推荐模块管理”;接着启用智能推荐与人工精选双模式,并设人工商品优先展示;然后在推荐区布局4至6款商品,按爆款与新品3:2比例搭配并定期更新;最后增设750×350像素活动banner和15秒内…

    2026年8月29日
    100
  • safari浏览器如何阻止广告重定向_safari浏览器广告重定向阻止方法

    首先启用Safari的“阻止弹出式窗口”功能,再安装Adblock Plus等广告拦截扩展并开启全局运行,接着清除历史记录与网站数据以删除潜在追踪脚本,最后可临时关闭JavaScript阻断重定向,但需注意可能影响网页功能。 如果您在浏览网页时发现 Safari 浏览器频繁跳转到广告页面,这可能是由…

    2026年8月29日
    100
  • 同城旅行app酒店订单如何修改_同城旅行app酒店订单修改操作指南

    首先确认订单是否支持修改,进入同程旅行App“我的”-“待出行”找到订单,查看修改按钮及政策;若可修改,点击“修改”调整日期或房型,核对差价后提交;若不支持或遇问题,联系客服寻求协助。 如果您在同程旅行App上预订的酒店订单需要调整,但不确定如何操作,可能会担心错过修改时限或产生额外费用。以下是进行…

    2026年8月29日
    000
  • win8应用商店打不开怎么办 Win8应用商店无法打开修复指南

    首先清除应用商店缓存,若无效则检查系统更新、修复系统文件、启用TLS 1.2协议,最后重注册应用商店组件以恢复功能。 如果您尝试打开Windows 8系统中的应用商店,但应用无法加载或直接闪退,则可能是由于网络连接异常、缓存数据损坏或系统组件故障所致。以下是解决此问题的步骤: 本文运行环境:Dell…

    2026年8月29日
    200
  • 微博怎么看关注的人的动态_微博关注动态查看方法

    1、通过首页点击“关注”旁下拉箭形选择“最新微博”模式,可直接查看关注用户的全部最新动态;2、进入【我】→【关注】列表,向上滑动即可浏览关注者发布的实时内容,点击头像可查看详情;3、在目标用户主页开启“新微博提醒”,即可及时接收其发博通知。 如果您在微博上关注了某些用户,但不确定如何查看他们的最新动…

    2026年8月29日
    700

发表回复

登录后才能评论
关注微信