资讯专栏INFORMATION COLUMN

form表单的file文件上传那些事

GeekGhc / 750人阅读

摘要:客户端直接访问用户计算机的文件以前在表单添加了字段是为給开发提供安全的方式以便在客户端更好访问用户的文件字段的基础上加了一些直接访问文件信息的接口集合与类型读取文件的数据集合本地文件的名称文件的字节大小字符文件的类型文件上次修改的时间实现

file API
  客户端直接访问用户计算机的文件,2000以前,在表单添加了字段.  
  file API是为給web开发提供安全的方式,以便在客户端更好访问用户的文件,字段的基础上加
了一些直接访问文件信息的接口-files集合.与fileReader类型读取文件的数据.
files集合
name: 本地文件的名称  
size: 文件的字节大小  
type: 字符、文件的MIME类型  
lastModifiedDate: 文件上次修改的时间(chrome实现了这属性)
fileReader类型
    readAsText(file, encoding): 以纯文本的方式读取文件.
    readAsDataURL(file): 读取文件并以URL的形式保存在result属性中.  
    readAsBinaryString(file): 读取文件并将一个字符串将保存在result属性中,一个字符
为一个字节.
    readAsArrayBuffer(file): 读取文件并将一个包含文件内容的ArrayBuffer保存在
result属性中.  
    (file-文件集合; encoding-编码类型)
事件
    由于数据是异步读取.因此fileReader提供了几种事件.
    progress事件: 每~50ms,便触发一次.
    error事件: 但文件无法读取就会触发,有个属性error.code属性.1表示未找到文件,2表示
安全性错误,3表示读取中断,4表示文件不可读,5表示编码错误.  
    load事件: 触发但文件完整读取后.
    中断了还会触发abort事件,在load、error事件后还会触发loadend事件.
栗子
当用户上传完图片之后,可在页面立即显示.
//html

//js
function showFileImg(ele, dist){
    const filesList = document.querySelector(ele);
    const output    = document.querySelector(dist);
    
    filesList.addEventListener("change", function(event) {
        //实例fileReader对象
        const reader = new FileReader();
        //获取文件集合
        let files  = event.target.files[0];
       
        if(/image/.test(files.type)){
            //读取文件并通过URL类保存在result里
            reader.readAsDataURL(files);
            //事件
            reader.onload = function(){
                //获得图片数据并插进显示节点
                let html = ""
                i++;
            }
            output.innerHTML = info;
        }
    } 

    droptarget.addEventListener("dragenter", handleEvent);
    droptarget.addEventListener("dragover", handleEvent);
    droptarget.addEventListener("drop", handleEvent);
}
dropFile();
使用XHR上传文件
//html



//js
function xhrFile(){
    const file     = document.querySelector("#file");
    const sendFile = document.querySelector("#sendFile");
    
    //文件信息
    let files;
    
    //获得文件信息
    function getFileInfo(event){
        let files = event.target.files[0];
    };
    //发送xhr
    function sendFileXhr(event){
        //实例对象
        let data = new FormData();
        let i    = 0;
        let len  = files.length;
        //遍历文件信息
        while(i < len){
            data.append("file" + i, files[i]);
            i++;  
        }
        //实例请求对象
        let xhr = new XMLHttpRequest();
        xhr.open("post", "......php", true);
        //请求成功打印放回信息
        xhr.onreadystatechange = function() {
            if(xhr.readystate === 4){
                alert(xhr.responseText);
            }    
        }
        xhr.send(data);
    };
}
xhrFiles()

对象formData可通过键值模拟一系列的表单,通过xhr的send提交数据.

formdata append

new FormData(form? : HTMLFormElement);
给这对象加键值
append(name, value, filename);
name: 字段名称
value: 字段数值
filename: 文件的文件名(可选).

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82926.html

相关文章

  • form表单file文件上传那些

    摘要:客户端直接访问用户计算机的文件以前在表单添加了字段是为給开发提供安全的方式以便在客户端更好访问用户的文件字段的基础上加了一些直接访问文件信息的接口集合与类型读取文件的数据集合本地文件的名称文件的字节大小字符文件的类型文件上次修改的时间实现 file API 客户端直接访问用户计算机的文件,2000以前,在表单添加了字段. file API是为給web开发提供安全的方式,以便...

    LinkedME2016 评论0 收藏0
  • 文件上传二三

    摘要:选择文件谈到文件上传,不得不提,中文名叫表单。当需要使用回调函数来处理上传完成后后端返回的数据时,需要和后端预先达成约定,如,回调函数名,参数列表,等等。后端可以根据边界的检验,识别上传的文件,读取元数据中的文件属性,从而为验证提供数据。 引子 其实很早就开始酝酿这一篇了,无奈总是发现有缺漏的地方,遂努力恶补前端+后端+底层相关知识。今天终于可以发表了。 --跟生孩子一样啊。 选择文...

    wudengzan 评论0 收藏0
  • 7.1、使用Commons Fileupload上传文件

    摘要:你可以通过在应用程序上下文中添加一个解析器来启用的处理。当的检测到一个请求时,它会激活你声明好的解析器,然后把这个解析器转交给请求。解析器会把当前的扭曲为一个支持文件上传的。首先,创建一个带有的表单,这样用户就可以通过这个表单上传文件了。   最近家里的网出现了莫名其妙的问题,连不上码云了,所以把示例迁到了 github 上。本示例见这个项目的 master 分支的 ZestMulti...

    suosuopuo 评论0 收藏0
  • [未完待续] 上传文件这件,蛋疼何止一点点!

    摘要:在做时,不可避免地要上传一些文件,最常用到的就是图片。提供电子邮件服务的站点,除了图片还需要上传文档等其他类型文件的功能。当点击所看到的按钮时,实际点击的是原生上传控件,这样一来就触发了浏览器默认行为,即打开选择文件对话框。 在做 Web App 时,不可避免地要上传一些文件,最常用到的就是图片。在线相册及图片收藏网站等以提供图片存储服务的站点自不用说,社交网络的头像、发布信息等都需要...

    tinyq 评论0 收藏0
  • Ajax上传文件

    摘要:我们将教你一个请求上传多文件的例子。然而,你可以用同样的办法上传单个文件。在功能方面的进步,消除供开发者使用第三方浏览器插件来处理文件上传的需要。 AJAX的采用标志着的Web历史上的一个巨大飞跃。与Web服务器通信而不需要重新加载页面的能力已改变了Web应用程序构建。动态网站的概念形成以后,AJAX(XMLHttpRequests) 技术发展迅速。 近年来XMLHttpRequest...

    Warren 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<