原生JS实现文件上传
- 利用
<input type="file">
,带有type="file"
的<input>
元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服务器上,或者通过Javascript
代码和文件 API 对文件进行操作。 - 利用
URL.createObjectURL()
,URL.createObjectURL()
静态方法会创建一个DOMString
,其中包含一个表示参数中给出的对象的URL
。这个URL
的生命周期和创建它的窗口中的document
绑定。这个新的URL
对象表示指定的 File 对象或 Blob 对象。
<body>
<input type="file" value="选择文件" id="file">
<img src="" id="img" alt="暂无" width="70" height="70">
</body>
<script>
const file = document.querySelector("#file");
const img = document.querySelector("#img");
file.onchange = function(e) {
console.log(e);
img.src = URL.createObjectURL(e.target.files[0]);
}
</script>
演示:
上传前:
上传成功:
原生JS实现文件下载
<body>
<input type="file" value="选择文件" id="file">
<img src="" id="img" alt="暂无" width="70" height="70">
<button id="down">下载</button>
</body>
<script>
const file = document.querySelector("#file");
const img = document.querySelector("#img");
const down = document.querySelector("#down");
let file1 = null;
file.onchange = function(e) {
console.log(e);
file1 = e.target.files[0]; // 文件上传
img.src = URL.createObjectURL(e.target.files[0]);
}
down.onclick = function() {
let a = document.createElement("a");
a.setAttribute("href", URL.createObjectURL(file1));
a.setAttribute("download", "filename");
a.click();
}
</script>
Vue实现文件上传与下载
下载
三种方式:
- 前端创建超链接,通过
a
标签的链接向后端发送get
请求,接收后端的文件流。(或者创建div
标签,动态创建a
标签) - 通过创建
iframe
- 向后端发送
post
请求,使用Blob
格式
上传
1.input
方式
vue中的文件上传主要分为两步:前台获取到文件和提交到后台。
步骤:
①前台获取文件,主要是采用input框来实现
通过file
类型的input
框实现文件上传;然后通过设置multiple="multiplt"
实现了多文件上传,并且使用accept
实现了上传文件类型限制;最后通过监听change
事件,前台获取到上传的文件;通过change
事件中的event.target.files
就能获取到上传的文件了,在上面再次对获取的文件进行了类型限制。
②数据提交
获取到文件数据后,采用FormData
的方式将数据提交到后台。
- element-ui的el-uplod组件实现
Upload 上传