当前位置:网站首页>JS 文件上传下载
JS 文件上传下载
2022-06-27 09:14:00 【Xiaaoke】
文件上传
const xhr = null;
// 文件上传
const UpladFile = () => {
// 获取文件
const dom = document.getElementById('file');
// 设置文件上传地址
const url = '';
// 创建文件对象
const form = new FormData();
form.append('file', dom);
// 创建ajax
xhr = new XMLHttpRequest();
xhr.open('post', url, true); // post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
xhr.onload = uploadComplete; //请求完成
xhr.onerror = uploadFailed; //请求失败
// 开始上传,发送form数据
xhr.send(form);
}
//上传成功响应
const uploadComplete = evt => {
//服务断接收完文件返回的结果
const data = JSON.parse(evt.target.responseText);
if(data.success) {
alert("上传成功!");
}else{
alert("上传失败!");
}
}
//上传失败
const uploadFailed = evt => {
alert("上传失败!");
}
//取消上传
const cancleUploadFile = () => {
xhr.abort();
}
文件下载
后端给的是地址
// 第一种方式
let a = document.createElement('a');
a.href = url;
a.download = filename;
a.click();
// 第二种方式
window.open(url)
// 第三种方式
window.localhost.href = url
后端给的是文件流
请求的 responseType 设置成 arraybuffer 或者 blob,再使用URL.createObjectURL() 生产url实现查看下载
axios({
url:"xxxxxx",
responseType:'blob'
}).then(res =>{
let url = URL.createObjectURL(res.data) // res.data 的类型要么是file,要么是blob
// const reader = new FileReader();
// reader.readAsDataURL(res.data);
// preview.src = reader.result;
let a = document.createElement('a');
a.href = url;
a.download = 'xxx.png';
a.click();
let img = document.createElement('img');
img.src = url
})
在线查看pdf
// 第一种方式
document.getElementById('input').onchange = function(e){
console.log(e.target.files[0])
let URL = window.URL || window.webkitURL;
let url = URL.createObjectURL(e.target.files[0]);
window.open(url)
}
// 第二种方式
{
/* <iframe id="viewer"> html*/}
const obj_url = window.URL.createObjectURL(blob);
const iframe = document.getElementById('viewer');
iframe.setAttribute('src', obj_url);
window.URL.revokeObjectURL(obj_url);
文档
FileReader对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据]
XMLHttpRequest:对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更新页面的局部内容。XMLHttpRequest 在 AJAX 编程中被大量使用。
FormData:接口提供了一种表示表单数据的键值对 key/value 的构造方式,并且可以轻松的将数据通过XMLHttpRequest.send() 方法发送出去,本接口和此方法都相当简单直接。如果送出时的编码类型被设为 "multipart/form-data",它会使用和表单一样的格式
URL.createObjectURL():静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。
边栏推荐
猜你喜欢

Nosql 数据库 -Redis 安装
![[MySQL basic] general syntax 1](/img/f2/fb38409c034546e503d08a0b96cc61.png)
[MySQL basic] general syntax 1

2022.06.26(LC_6100_统计放置房子的方式数)

Preliminary understanding of pytorch

Matlab tips (19) matrix analysis -- principal component analysis

隐私计算FATE-离线预测

Oracle uses an SQL to find out which data is not in a table

(original) custom drawable
![[vivid understanding] the meanings of various evaluation indicators commonly used in deep learning TP, FP, TN, FN, IOU and accuracy](/img/d6/119f32f73d25ddd97801f536d68752.png)
[vivid understanding] the meanings of various evaluation indicators commonly used in deep learning TP, FP, TN, FN, IOU and accuracy

最全H桥电机驱动模块L298N原理及应用
随机推荐
多网络设备存在时,如何配置其上网优先级?
手把手带你玩摄像头模组
提高效率 Or 增加成本,开发人员应如何理解结对编程?
2022.06.26 (LC Luo 6101 Luo determines whether the matrix is an X matrix)
针对直播痛点的关键技术解析——首帧秒开、清晰度、流畅度
ucore lab5
I'm almost addicted to it. I can't sleep! Let a bug fuck me twice!
The background prompt module for accessing fastadmin after installation does not exist
内存泄露的最直接表现
数据类型占内存大小?LongVsObject
今日3大面试Demo[Integer ASCII 类关系]
Static code block vs construction code block
Quick start CherryPy (1)
Apache POI的读写
Object含有Copy方法?
Matlab tips (18) matrix analysis -- entropy weight method
招聘需求 视觉工程师
main()的参数argc与argv
Understanding mvcc in MySQL transactions is super simple
Enumeration? Constructor? Interview demo