当前位置: 首页 > news >正文

海报素材库网站免费健康码防疫核验一体机

海报素材库网站免费,健康码防疫核验一体机,哪些网站可以做微商品牌宣传,服务器试用文章目录 背景介绍案例介绍代码示例popup页面,上传文件页面popup页面,js上传代码,file文件转base64background监听消息,base64转file文件,axios上传 附-转base64后直接下载 背景介绍 示例扩展API版本MV2。 以弹…

文章目录

  • 背景介绍
  • 案例介绍
  • 代码示例
    • popup页面,上传文件页面
    • popup页面,js上传代码,file文件转base64
    • background监听消息,base64转file文件,axios上传
  • 附-转base64后直接下载

背景介绍

        示例扩展API版本MV2。
        以弹出窗口(popup)和背景页面(background page)为例。
        在浏览器中,弹出窗口(popup)和背景页面(background page)之间可以通过消息通道进行通信。但是,由于安全限制,弹出窗口不能直接访问背景页面的文件系统或进行文件传输。
        然而,可以使用一些方法来实现弹出窗口向背景页面传输文件,就是在popup页面将文件转为base64的字符串格式向background传输,然后再将base64重新转为file对象,达到传输文件的目的。

案例介绍

        从popup页面选择文件开始上传,触发上传按钮后,获取到选择的文件并将文件传输到background,触发上传接口传输到服务器端,完成文件上传操作。
在这里插入图片描述

代码示例

使用到的js工具有,jquery、axios。

popup页面,上传文件页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>popup</title><style>body {width: 400px;height: 450px;background-color: aliceblue;}.contnet {display: flex;flex-direction: column;flex-wrap: nowrap;align-items: center;}.upload_file {display: flex;flex-direction: column;margin-top: 88px;}.upload_btn {border: none;border-radius: 10px;background-color: #4343e0;font-size: 16px;color: white;font-weight: 400;font-family: '微软雅黑';cursor: pointer;}.upload_btn:hover {border: none;border-radius: 10px;background-color: #4343e0;font-size: 16px;color: white;font-weight: 400;font-family: '微软雅黑';cursor: pointer;box-shadow: 0px 0px 0px 1px #848181;}</style>
</head>
<body><div class="contnet"><div class="upload_file"><!--  type: input类型为文件选择类型name: 参数名accept: 上传文件的可选类型--><input id="uploadFile" type="file" name="myFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|application/vnd.ms-excel" style="margin-bottom: 5px;" /><button id="uploadFileBtn" class="upload_btn" type="button">上传</button></div></div>
</body>
<script type="text/javascript" src="/utils/chrome.js"></script>
<script type="text/javascript" src="/lib/jquery-3.6.3.js"></script>
<script type="text/javascript" src="/popup/popup.js"></script></html>

popup页面,js上传代码,file文件转base64

// popop.js、jquery-3.6.3.js
// 绑定文件上传的button
$("#uploadFileBtn").click(() => {// 如果是单文件上传,选择第一个文件上传//let file = $("#uploadFile")[0].files[0] // oklet file = $("#uploadFile").prop('files')[0]if (!file) {alert('文件上传:' + '请先选择文件')return}let boo = confirm('是否确认上传文件?\n\r 请谨慎操作上传文件')if (boo) {// file转base64let reader = new FileReader()reader.readAsDataURL(file)reader.onload = () => {let base64 = reader.result.split(',')[1]// 发送base64到background// chrome.jssendMessageToBackground({type: 'upload', base64: base64}, (rsp) => {// 上传成功 or 失败后做一些操作})}}
})

background监听消息,base64转file文件,axios上传

// 上传文件
// axios.js
// base64: popup传过来的数据
function uploadFile(base64) {// base64转bloblet blob = base64ToBlob(base64, 'application/vnd.ms-excel')// blob转filelet file = new File([blob], '上传文件的名字[filename].xlsx', {type: 'application/vnd.ms-excel'})// 构造formData表单对象,发起post请求let formatData = new FormData()formatData.append('file', file)// axios发送文件上传的请求return axios({url: 'upload_url',method: 'POST',headers: {'xx-header': 'xxx',// 'Content-Type': 'multipart/form-data' // 不需要设置Content-Type请求头,axios请求机制会自动判断,发起什么样的请求},transformRequest: [(data, headers) => {delete headers['Content-Type']return data}],data: formatData}).then(rsp => {// 服务器数据响应return rsp.data})
}/***	* @param {*} mineType 选择适当的类型来转换base64,并创建Blob二进制对象*  'application/pdf': 表示 PDF 文件类型,可以以可移植文档格式查看和编辑。*  'application/msword' 或 'application/vnd.ms-word': 表示 Word 文档类型,可以以 Microsoft Word 格式查看和编辑。*  'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 表示 Word 2007 或更高版本的文件类型,可以以 Office Open XML 格式查看和编辑。*  'application/epub+zip': 表示 ePub 电子书类型,可以以电子书格式查看和编辑。*  'application/vnd.ms-powerpoint' 或 'application/mspowerpoint': 表示 PowerPoint 演示文稿类型,可以以 Microsoft PowerPoint 格式查看和编辑。*  'application/vnd.openxmlformats-officedocument.presentationml.presentation': 表示 PowerPoint 2007 或更高版本的文件类型,可以以 Office Open XML 格式查看和编辑。*  'application/vnd.ms-excel' 或 'application/msexcel': 表示 Excel 电子表格类型,可以以 Microsoft Excel 格式查看和编辑。*  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 表示 Excel 2007 或更高版本的文件类型,可以以 Office Open XML 格式查看和编辑。*  'image/jpeg'、'image/png'、'image/gif' 等:表示图像类型的数据,可以以图像的形式查看和编辑。* @returns */
function base64ToBlob(base64, mineType) {mineType = mineType || 'application/octet-stream'const byteCharacters = atob(base64)const byteNumbers = new Array(byteCharacters.length)for(let i = 0; i < byteCharacters.length; i++) {byteNumbers[i] = byteCharacters.charCodeAt(i)}let byteArray = new Uint8Array(byteNumbers)return new Blob([byteArray], {type: mineType})
}

附-转base64后直接下载

function download(base64, mineType) {mineType = mineType || 'application/octet-stream'const dataUrl = `data:${mineType};base64,${base64}`const link = document.createElement('a')// document.body.appendChild(link)link.href = dataUrllink.download = 'file.xlsx' // 前提需要先知道是什么文件类型link.click() // 点击下载// document.body.removeChild(link) // 下载完成后移除标签
}
http://www.hkea.cn/news/16220/

相关文章:

  • wordpress网站实现微信登录企业网络推广
  • 高端网站设计欣赏郑州网站
  • 重庆网站设计公司推荐会计培训班
  • 可以用什么做网站登录页面怎样做引流推广
  • 河北网站seo外包搜索引擎优化的主题
  • 域名对网站的影响百度搜索风云榜排行榜
  • 电子商务b2c网站建设品牌策划书
  • 做网站怎么切片网络营销与直播电商专业
  • 如何赋予网站建设以生命力朋友圈推广
  • 做网站的公司深圳系统优化软件哪个好
  • 新余公司做网站qq代刷网站推广免费
  • 西安 网站建设 费用厉害的seo顾问
  • 移动营销关键词优化搜索引擎
  • 怎么让网站绑定域名访问不了搜索引擎营销的原理是什么
  • 济南网站惠州百度seo找谁
  • 自助餐火锅网站建设企业推广哪个平台好
  • b s网站系统如何做性能测试站外推广怎么做
  • wordpress搭建视频教程深圳最好的外贸seo培训
  • 游戏发卡中心网站源码抖音seo运营模式
  • 三里屯做网站的公司软件开发工资一般多少
  • 郑州做网站第一人湖北最新消息
  • 织梦网站地图怎么做sitemap.xml怎样制作网站
  • 可靠的合肥网站建设搜索推广
  • 网页源码怎么做网站整站seo服务
  • 做视频素材哪个网站好电商热门关键词
  • 电商建站价格南宁求介绍seo软件
  • 长沙网站制作的公司网站制作教程
  • 商品展示型网站有哪些网站运营怎么做
  • asp做的网站青岛网站制作
  • php网站开发所需要的软件口碑营销怎么做