上传下载图片的

上传图片

1.上传图片的方法一般是用Upload组件直接上传File的信息

2.通过FormData对象上传

FormData对象是一个JavaScript对象,可以用来存储表单数据
headers:{“Content-type”:“multipart/form-data”}

3.通过Form表单上传

在HTML中创建一个表单,包含一个文件输入字段,用户可以选择一个或多个文件进行上传。这是最常见的一种方式。

// 获取表单元素
const form = document.getElementById('myForm');// 创建FormData对象
const formData = new FormData(form);// 发送POST请求
fetch('/submit', {method: 'POST',body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

下载的

点击直接在当前页面下载,用a标签实现的
** 具体的思路**

<a href="文件地址" download="文件名">点击下载</a>

将文件地址替换为要下载的文件的URL,将文件名替换为要保存的文件名。用户点击“点击下载”链接时,浏览器会开始下载指定的文件。

注意:当图片的源(ip和端口)与当前页面不同时,即使添加了download属性,也无法进行下载

exportFile(i tenplaterd: item.id 3). then((res)=>{const blob = new Blob([res], { type: 'application/octet-str'});const url = window. URL. createobjectURL (blob) ;const link = document. createElement ('a');link.style.display = 'none';link.href = url;link.setAttribute('download', item.templateName + '.json');document .body.appendChild (link);link.click();document .body.removeChild(1ink);// 下载完成移除元素window. URL.revokeobjectURL (ur1);// 释放掉Blob对象},

方法二:
文件:utils/util.js

export async function blobValidate(data) {try {const text = await data.text();JSON.parse(text);return false;} catch (error) {return true;}
}
import { blobValidate} from "@/utils/util";
//vue
axios({method: 'get',url: `/api/countryBusiness/range/download-template/${mannuId}`,// url: `/api/countryBusiness/range/download-template/115`,responseType: 'blob',headers: { 'Authorization': 'Bearer ' + getToken() },}).then(async (res) => {//  const blob = new Blob([res.data])console.log('1===',res.data,typeof res.data);const isLogin = await blobValidate(res.data);if (isLogin) {const blob = new Blob([res.data])saveAs(blob, decodeURI(res.headers['content-disposition'].replace('attachment;filename=', '')))} else {// this.printErrMsg(res.data);}})

注意:若是下载excel文件,必须要传responseType: ‘blob’,否则可能会出现下载的文件打不开,显示文件有问题,不能正常打开。

下载excel打不开的原因如下:

在前端发起 HTTP 请求下载文件时,responseType 选项指定了请求响应的数据类型。当你设置 responseType'blob',你告诉浏览器你期望的响应是一个二进制的 Blob 对象。Blob 对象是一种不可变的、原始数据的集合,可以是文本或二进制数据。

如果你在下载 Excel 文件时没有指定 responseType'blob',可能会出现以下情况:

  1. 默认的响应类型:如果未指定 responseType,浏览器可能会默认将其设置为 'text'。这意味着即使服务器返回的是二进制数据,浏览器也会尝试将其解析为文本。对于 Excel 文件(通常是 .xlsx 格式,基于 XML),这会导致文件内容无法正确解析,因此无法打开。

  2. 文件内容损坏:如果浏览器尝试将二进制数据解析为文本,可能会破坏文件的二进制结构,导致文件无法正常打开。

  3. 编码问题:某些服务器配置可能会对响应内容应用编码(如 gzip),如果没有正确处理这些编码,即使文件被下载,也可能因为编码问题而无法正确打开。

使用 'blob' 作为 responseType 可以确保浏览器以正确的方式接收和处理文件数据,保持文件的原始二进制格式,从而允许文件被正确地下载和打开。

以下是一个使用 Axios 库下载文件并指定 responseType'blob' 的示例:

axios({url: '/path/to/your/excel.xlsx',method: 'GET',responseType: 'blob', // 指定响应类型为 Blobheaders: {'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' // 指定接受的 MIME 类型}
}).then(function (response) {// 创建一个 Blob 对象,并设置文件类型const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });// 创建一个指向该 Blob 的 URLconst url = window.URL.createObjectURL(blob);// 创建一个临时的链接用于下载const link = document.createElement('a');link.href = url;link.download = 'your-filename.xlsx';document.body.appendChild(link);link.click();// 清理并移除链接document.body.removeChild(link);window.URL.revokeObjectURL(url); // 释放 URL 对象
}).catch(function (error) {console.error('File download failed:', error);
});

在这个示例中,我们通过设置 responseType: 'blob' 来确保响应数据以 Blob 形式接收,然后创建一个指向该 Blob 的 URL,并使用一个临时的 <a> 标签来触发文件下载。这样,下载的 Excel 文件就可以正常打开了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】GCD与LCM

一.概述 最大公约数&#xff08;GCD&#xff09;和最小公倍数&#xff08;Least Common Multiple&#xff0c;LCM&#xff09; 在C中&#xff0c;可以使用 std::__gcd(a, b)来计算最大公约数 1.欧几里德算法/辗转相除法 int gcd(int a,int b){return b?gcd(b, a%b):a; } 2…

Tensorboard以及Transforms初步学习

一.前情提要 1.本文是代码结合知识点&#xff0c;注释即为知识点 2.主要详细讲解Tensorboard以及Transforms代码以及基础知识 3.若想深入学习&#xff0c;建议阅读 P3. Python学习中的两大法宝函数&#xff08;当然也可以用在PyTorch&#xff09;_哔哩哔哩_bilibili 二.简述…

抖音运营技巧

1、视频时长 抖音的作品是否能够继续被推荐&#xff0c;取决于综合数据&#xff0c;包括完播率、点赞率、评论率、转发率和收藏率等。其中&#xff0c;完播率是最容易控制的因素。对于新号来说&#xff0c;在没有粉丝的初期&#xff0c;发布过长的视频可能会导致无人观看。因此…

金田金业带你一文了解现货黄金开户注意事项

现货黄金作为一种受欢迎的投资品种&#xff0c;吸引了越来越多的投资者。然而&#xff0c;在进行现货黄金开户时&#xff0c;有一些重要的注意事项需要牢记。本文将为您详细介绍现货黄金开户的九大关键要点&#xff0c;确保您能够在投资过程中做出明智的决策。 第一&#xff0c…

汇编——SSE对齐

SIMD是(Single Instrument Multi Data)&#xff0c;MMX实现了SIMD&#xff1b;SSE是&#xff08;Streaming SIMD Extension&#xff09;&#xff0c;它取代了MMX&#xff1b;后来AVX&#xff08;Advanced Vector Extension&#xff0c;高级向量扩展&#xff09;对SSE进行了扩展…

Java- maven下载jar包,提示找不到,Could not find artifact

1、执行下面命令行 mvn install:install-file -Dfile/home/quangang/桌面/isv-sdk-2.0.jar -DgroupIdcom.jd -DartifactIdisv-sdk -Dversion2.0 -Dpackangjar 2、然后这里要加上jar包

C语言:strlen和sizeof的适用场景

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…

macOS上QT打开麦克风和摄像头的权限问题

同样的代码在Windows上可以轻松操作麦克风和摄像头&#xff0c;特别是用QT这种跨平台的框架。但是对macOS这种权限要求完善的系统还需要进行一些配置&#xff0c;那就是增加Info.plist属性配置文件。如果是之前的早期5.x版本的QTCreator因为使用的是qmake构建系统&#xff0c;估…

No dashboards are active for the current data set.

再次记录一下这个离谱的问题 之前出现这个问题是因为目录没写对 今天遇到这个问题的原因是目录是对的&#xff0c;跟目录是否带有中文也没关系 是writer写入的时候写的是空的&#xff0c;离谱的是写入是空的情况下也会生成events日志文件&#xff0c;看起来好像成功写入了一样&…

Spring源码解析上

spring源码解析 整体架构 defaultListableBeanFactory xmlBeanDefinitionReader 创建XmlBeanFactory 对资源文件进行加载–Resource 利用LoadBeandefinitions(resource)方法加载配置中的bean loadBeandefinitions加载步骤 doLoadBeanDefinition xml配置模式 validationMode 获…

2024-04-05 问AI: 介绍一下深度学习中的Leaky ReLU函数

文心一言 Leaky ReLU&#xff08;Leaky Rectified Linear Unit&#xff09;函数是深度学习领域中的一种激活函数&#xff0c;主要用于解决ReLU&#xff08;Rectified Linear Unit&#xff09;函数在负值区域为零的问题。ReLU函数在输入为正时保持原样&#xff0c;而在输入为负…

nodejs实现TCP端口转发并截包的小工具

近期我正致力于开发一个基于 Go-CQHTTP 的 QQ 机器人应用程序项目&#xff0c;该项目现已成功实现了 Go-CQHTTP 的容器化部署&#xff0c;利用 Docker 技术确保其运行环境的一致性与便捷性。随着项目推进&#xff0c;接下来的工作重心转向部署配套的签名服务器&#xff08;qsig…

软考111-上午题-【计算机网络】-URL和DNS

一、URL解析 org&#xff1a;各类组织结构&#xff08;非盈利团队&#xff09; 1-1、顶级域 顶级域名是域名的最后一个部分&#xff0c;即是域名最后一点之后的字母&#xff0c;例如&#xff1a;www.baidu.com这个域名中&#xff0c;顶级域是.com&#xff08;或.COM&#xff…

WPF中TextWrapping

在 WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;TextWrapping 是一个与文本布局相关的属性&#xff0c;用于控制文本在遇到容器边界时是否自动换行。这个属性常用于文本展示控件&#xff0c;如 TextBlock、TextBox、Label 等&#xff0c;以确保文…

数据结构系列-队列的结构和队列的实现

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 队列 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO&#xff0c;…

全面解析找不到msvcr110.dll,无法继续执行代码的解决方法

MSVCR110.dll的丢失可能导致某些应用程序无法启动。当用户试图打开依赖于该特定版本DLL文件的软件时&#xff0c;可能会遭遇“找不到指定模块”的错误提示&#xff0c;使得程序启动进程戛然而止。这种突如其来的故障不仅打断了用户的正常工作流程&#xff0c;也可能导致重要数据…

基于SpringBoot+微信小程序的农产品销售平台

一、项目背景介绍&#xff1a; 随着人们收入的不断增加、生活水平的普遍提高,对生活质量的要求也日益凸显。而作为关乎每个人的生命、健康安全的食品卫生、质量无疑更被人们所重视。所以,… 2. 其他国家的绿色有机食品所占其国家食品市场比重比较大,如德国在99年便已达到40%,美…

Mac反编译APK

文章目录 第一种方式: brew installapktool 使用说明dex2jar 使用说明 第二种方式: 下载安装包apktool 使用说明 (根据官方介绍没有操作成功,后续成功再更新这里)dex2jar 使用说明 安装 JD-GUI 查看jar包中的class文件JD-GUI 使用说明 第一种方式: brew install 安装过程可能很…

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start&#xff08;python版本的&#xff09;&#xff0c;我了解 grpc 内部使用的是 HTTP2&#xff0c;所以我就想着抓包来试试&#xff0c;下面就来记录一下这个过程中的探索。 注意&#xff1a;我的电脑上面安装了 Fiddler Classic&#xff0c;…