首页 > 其他分享 >HTML5 文件上传的2种方式

HTML5 文件上传的2种方式

时间:2024-01-04 10:01:29浏览次数:34  
标签:function 文件 form HTML5 var 上传 response result

以前上传文件需要提交Form表单。

HTML5方式上传文件,可以通过使用FormData类模拟Form表单提交,从而实现无刷新上传文件。

 

假设有一个文件选择框

<input type="file" name="pic" id="pic" accept="image/gif" />

有下面2种方式上传文件:

1、XMLHttpRequest(有进度事件)

var files = document.getElementById('pic').files; //files是文件选择框选择的文件对象数组

if(files.length == 0) return; 

var form = new FormData(), 
    url = 'http://.......', //服务器上传地址
    file = files[0];
form.append('file', file);

var xhr = new XMLHttpRequest();
xhr.open("post", url, true);

//上传进度事件
xhr.upload.addEventListener("progress", function(result) {
    if (result.lengthComputable) {
        //上传进度
        var percent = (result.loaded / result.total * 100).toFixed(2); 
    }
}, false);

xhr.addEventListener("readystatechange", function() {
    var result = xhr;
    if (result.status != 200) { //error
        console.log('上传失败', result.status, result.statusText, result.response);
    } 
    else if (result.readyState == 4) { //finished
        console.log('上传成功', result);
    }
});
xhr.send(form); //开始上传

2、Fetch API(目前不支持进度事件)

var form = new FormData(),
    url = 'http://.......', //服务器上传地址
    file = files[0];
form.append('file', file);

fetch(url, {
    method: 'POST',
    body: form
}).then(function(response) {
    if (response.status >= 200 && response.status < 300) {
        return response;
    } 
    else {
        var error = new Error(response.statusText);
        error.response = response;
        throw error;
    }
}).then(function(resp) {
    return resp.json();
}).then(function(respData) {
    console.log('文件上传成功', respData);
}).catch(function(e) {
    console.log('文件上传失败', e);
});

参考文章:http://blog.ncmem.com/wordpress/2023/12/26/html5-文件上传的2种方式/


标签:function,文件,form,HTML5,var,上传,response,result
From: https://blog.51cto.com/u_14023400/9095618

相关文章

  • html5实现文件批量上传组件
    一、概述在html5中,相对于之前添加了不少新的元素和属性,在javascript中也添加了一些新的API,这些给我们的开发带来了很多便利。但由于各浏览器的发展步骤不一致,也导致了不同浏览器对html5支持的差异性。 二、实现原理1.在该html5实现的文件批量上传组件中,我们主要是利用html5中的一......
  • 使用HTML5实现多文件上传
    入门Fileinput之所以叫fileinput是因为它是一个标准的input元素,且其type属性被设置为"file"。很多年以来,fileinput一次只能选择并上传单个文件。在新的HTML5规范中为input元素添加了多选模式。当然,不同浏览器对于规范的实现一直以来都不尽相同。比如,Firefox3.6和WebKit以及Firef......
  • 实用篇-在Windows中验证下载文件的完整性
    下载文件后,我们通常希望验证文件的完整性,以确保它没有被篡改或损坏。在Windows系统中,有几种方法可以验证文件的完整性,以下是一些常见的步骤:1.文件属性右键单击文件,选择“属性”。切换到“摘要”标签,如果文件有数字签名或哈希值,这里应该会显示。可以与官方提供的哈希值进行比较。2.......
  • [EFI]英特尔 冥王峡谷 NUC8i7HVK 电脑 Hackintosh 黑苹果efi引导文件
    硬件型号驱动情况主板英特尔NUC8i7HVK处理器Intel®Core™i7-8809G(KabyLake-r)已驱动内存2x16GBDDR4-2400已驱动硬盘1TBPCIe-NVMeM.2SSD已驱动显卡IntelHD630(EmptyFramebuffer)+Radeon™RXVegaMGHGraphics4GB已驱动声卡RealtekHDAALC700已驱动网卡 英特尔......
  • Docker搭建轻量个人文件分享服务-文件传输自由
    title:Docker搭建轻量个人文件分享服务-文件传输自由tags:[Docker,文件分享,下载,分享,网盘,PingvinShare,NAS]新版原文:https://query.carlzeng.top:3/appsearch?q=Docker搭建轻量个人文件分享服务-文件传输自由版权声明:本博客所有文章除特别声明外,均采用BY-NC-SA许可......
  • C++汇总路径下全部文件名并提取出指定类型或名称的文件
      本文介绍基于C++语言,遍历文件夹中的全部文件,并从中获取指定类型的文件的方法。  首先,我们来明确一下本文所需实现的需求。现在有一个文件夹,其中包含了很多文件,如下图所示;我们如果想获取其中所有类型为.bmp格式的文件的名称,如果文件数量比较多的话,手动筛选就会很麻烦。而借......
  • 【小沐学写作】PDF文件添加水印(PyPDF2)
    1、简介水印通常用于保护文档或指定其所有权。另一方面,它们用于显示文档的状态,例如手稿、草稿等。在本文中,我们将演示如何在PowerPoint演示文稿中插入水印。您将学习如何在Python中为PowerPointPPT幻灯片添加文本或图像水印。2、pdf添加水印2.1Python代码2.1.1PyPDF2......
  • 无涯教程-jsoup - 加载文件
    以下示例将从本地文件加载HTML文件,返回一个Document文档,然后查找其数据。Fileinput=newFile(xxxxx);Documentdocument=Jsoup.parse(input,"UTF-8");Jsoup.parse示例使用您选择的任何编辑器在C:/>jsoup中创建以下Java程序。JsoupTester.javaimportjava.io.File;impo......
  • 几种下载文件的方法
    1.URL.createObjectURLletlink=document.createElement('a');link.download='hello.txt';letblob=newBlob(['Hello,world!'],{type:'text/plain'});link.href=URL.createObjectURL(blob);link.click();URL.re......
  • win10玩游戏-提示缺少ActivationClient.dll文件无法启动程序的解决方
    相信不少同学都遇到过,在启动游戏的时候,系统弹出缺少“ActivationClient.dll”文件无法启动的情况。不熟悉的朋友,常常以为是软件或游戏安装出现了异常,造成的。其实并不是游戏安装有异常,问题出在当前的操作系统中没有“ActivationClient.dll”文件,或者改文件丢失了,只要我们找到这个文......