文件上传前端(前端上传文件的几种方法)

2024-06-08 21:40:06 :49

文件上传前端(前端上传文件的几种方法)

这篇文章给大家聊聊关于文件上传前端,以及前端上传文件的几种方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

前端上传文件的几种方法

第一种:经典的form和input上传。

设置form的aciton为后端页面,enctype="multipart/form-data",type=‘post’

***隐藏网址***

使用input选择文件,设置好其他input的值,点击提交,将文件数据及签名等认证信息发送到form设置的action对应的页面,浏览器也会跳转到该页面。触发form表单提交数据的方式有2种,一种是在页面上点击button按钮或《input type=’submit’》按钮触发,第二种是在js中执行form.submit()方法。

优点:使用简单方便,兼容性好,基本所有浏览器都支持。

缺点:1. 提交数据后页面会跳转(下面会讲如何禁止页面跳转)。

2.因为是浏览器发起的请求,不是一个ajax,所以前端无法知道什么时候上传结束。

3. form表单里发送除文件外的数据,一般是新建一个type=hidden的input,value=‘需要传的数据’,每发送一个数据就需要一个input,一旦多了就会使得dom看起来比较冗余。

小技巧:

form表单提交数据后会自动跳转到action指定的页面,为了禁止页面跳转,可以在页面中新建一个空的ifame,比如name=’upload’,然后设置form的target="Uploader",form有一个target的属性,规定在何处打开action,这样form提交数据后就会仍停留在当前页。代码如下:

***隐藏网址***

这样写的另一个好处是,可以知道什么时候上传完成并接收到后端的回调结果。比如上面这个例子,文件数据发送到了 ’uploadFile.php’,假设该页面处理完数据后返回了一个地址,该地址会被写入到之前的iframe中。所以在ifame的onload函数触发时,也就是上传完成后,可以在iframe中读取到后端返回的数据。

var  iframe = document.getElementById(’upload1’);iframe.onload = function () {                      var doc = window.frames.innerHTML);                }

使用这种方法时需要注意,iframe有跨域限制,创建出来的iframe的地址如果和当前页面地址不同源,会报错。这种情况下,建议大家在iframe的onload函数中,再次向后端请求一个接口获取文件地址,而不是直接去iframe里读取。或者返回这样的数据。

《script type="text/javascript"》window.top.window(data)《/script》

callback是和前端约定好的名字,上传完成后触发该函数并返回后端数据。

第二种:使用formData上传。

用js构造form表单的数据,简单高效,但最低只兼容IE10,所以需要兼容IE9的童鞋们就略过这个方法吧。

html:

《input type=’file’》

js:

var formData = new FormData();formData.append("userid", userid);formData.append("signature", signature);formData.append("file", file); //file是blob数据//再用ajax发送formData到服务器即可,

注意一定要是post方式上传

说明:第一种方法提到了创建多个type=‘hidden’的input来发送签名数据,这儿可以用formData.append方法来代替该操作,避免了dom中有多个input的情况出现。最后将file数据也append到formData发送到服务器即可完成上传。

优点:由于这种方式是ajax上传,可以准确知道什么时候上传完成,也可以方便地接收到回调数据。

缺点:兼容性差

第三种:使用fileReader读取文件数据进行上传。

HTML5的新api,兼容性也不是特别好,只兼容到了IE10。

var fr = new FileReader();                fr.readAsDataURL(file);                fr.onload = function (event) {                    var data= event.target.result; //此处获得的data是base64格式的数据                    img.src = data;                    ajax(url,{data} ,function(){})                }

上面获得的data可以用来实现图片上传前的本地预览,也可以用来发送base64数据给后端然后返回该数据块对应的地址。

优点: 同第二种

缺点:一次性发送大量的base64数据会导致浏览器卡顿,服务器端接收这样的数据可能也会出现问题。

前端直接上传文件至OSS

解决的问题:当前端并发上传大量文件至服务器时,服务器带宽存在瓶颈,会影响上传速度 解决方案:使用STS临时访问凭证访问OSS 流程: 根据不同项目使用情况,向公司OSS管理员(杨坤)提供bucket信息,申请权限。具体包含以下内容: 前端在发起文件上传请求前,判断是否接近过期时间或已超过过期时间,并及时刷新临时访问凭证。

web前端上传图片的几种方法

下面给你介绍3种web前端上传图片的方法:

1.表单上传

最传统的图片上传方式是form表单上传,使用form表单的input控件,打开系统的文件选择对话框,从而达到选择文件并上传的目的。

form表单上传

表单上传需要注意以下几点:

(1).提供form表单,method必须是post。

(2).form表单的enctype必须是multipart/form-data。

(3).提供input type="file"上传输入域。

2.ajax上传

ajax和FormData可实现页面无刷新的文件上传效果,主要用到了jQuery的ajax()方法和XMLHttpRequest Level 2的

FormData接口。通过FormData对象可以更灵活方便的发送表单数据,因为可以独立于表单使用。如果你把表单的编码类型设置为multipart/form-data ,则通过FormData传输的数据格式和表单通过submit()方法传输的数据格式相同。

ajax无刷新上传

Ajax无刷新上传的方式,本质上与表单上传无异,只是把表单里的内容提出来采用ajax提交,并且由前端决定请求结果回传后的展示结果。

3.各类插件上传

当上传的需求要求可预览、显示上传进度、中断上传过程、大文件分片上传等等,这时传统的表单上传很难实现这些功能,我们可以借助现有插件完成。

如百度上传插件Web Uploader、jQuery图片预览插件imgPreview 、拖拽上传与图像预览插件Dropzone.js等等,大家可根据项目实际需求选择适合的插件。

文件上传功能是前端开发做的事,还是后台开发做的事

这个是前后端配合完成的事:后端:编写后台逻辑,提供上传文件的接口。前端:根据后端提供的接口,编写前端代码,向后端提供的接口发送文件。

关于文件上传前端和前端上传文件的几种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

文件上传前端(前端上传文件的几种方法)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.