html2canvas图片生成file格式传送到后台服务器

简介: html2canvas图片生成file格式传送到后台服务器

1.首先将html保存为base64图片
html2canvas.js(可在各cdn进行下载)

html2canvas百度一下代码很多,这里废话不多说,直接上代码
因为是将html里部分保存为图片,所以以下代码实现的是全屏画布上展示需要的部分

var canvas1 = document.createElement("canvas");
let _canvas = document.querySelector('.resDetailRight');//目标块
var bodyW = parseInt(window.getComputedStyle(document.querySelector('html')).width)
var bodyH = parseInt(window.getComputedStyle(document.querySelector('html')).height)
var footH = parseInt(window.getComputedStyle(document.querySelector('.recommend-resume')).height) //多余部分
console.log('canvas:', bodyW, bodyH)
//将canvas画布放大若干倍,然后盛放在较小的容器内,就显得不模糊了
canvas1.width = bodyW * 2;
canvas1.height = (bodyH - footH) * 2;
canvas1.style.width = bodyW + "px";
canvas1.style.height = bodyH - footH + "px";
//关于截取不全的操作,点击触发时需要从顶部获取,故在此将页面滚动到顶部然后在执行
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
var context = canvas1.getContext("2d");
context.scale(2, 2);
html2canvas(_canvas, {
  canvas: canvas1
}).then(function (canvas) {
   //document.body.appendChild(canvas); //直接在底部展示该图
   file = canvas.toDataURL("image/png");
   //canvas转换成url,然后利用a标签的download属性,直接下载,绕过上传服务器再下载
   // document.querySelector(".down").setAttribute('href', canvas.toDataURL());
});

2.将获取的图片转换为文件格式

dataURLtoFile(dataURI, type) {
let binary = atob(dataURI.split(',')[1]);
let array = [];
for(let i = 0; i < binary.length; i++) {
        array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type:type });
}

3.通过ajax将文件传给后端服务器

var formData = new FormData();
let blob= dataURLtoFile(file, 'image/jpeg')
let fileOfBlob = new File([blob], new Date()+'.jpg')
    formData.append('file', fileOfBlob);
    $.ajax({
    url: "/gateway/system/plug/resume/upload",
    type: "post",
    data: formData,
    headers:{
       'Authorization':'bearer '+sessionStorage.getItem("token")
    },
    contentType: false,
    processData: false,
    success: function (res) {
        let resumeInfo = res.result
    //sendResumeInfo(tabId, resumeInfo)
    checkRepeat(tabId, JSON.stringify(resumeInfo))
    },
    error: function (data) {
        alert("上传失败")
        }
   });

至此功能开发完成。

相关文章
|
26天前
|
前端开发
html 格式
【10月更文挑战第14天】html 格式
33 4
|
1月前
|
编解码 前端开发 UED
HTML多媒体格式支持与优化
在HTML中,多媒体格式的支持与优化至关重要。使用`&lt;audio&gt;`、`&lt;video&gt;`和`&lt;img&gt;`标签可分别嵌入音频、视频和图像。支持的格式包括MP3、OGG、JPEG等。为优化体验,应压缩文件、采用响应式设计、使用懒加载,并考虑转码及CDN托管。此外,添加字幕和描述文件可提高辅助功能。遵循这些最佳实践,能显著提升多媒体内容的加载速度与用户满意度。
|
11天前
利用html2canvas插件自定义生成名片信息并保存图片
这是一个利用html2canvas插件自定义生成名片信息并保存图片,自定义上传头像,自定义输入个人信息内容,自定义图片名称,并将生成的图片保存到本地
26 1
利用html2canvas插件自定义生成名片信息并保存图片
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
122 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
12天前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
27天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
39 1
|
1月前
HTML图片
【10月更文挑战第4天】HTML图片。
24 2
|
1月前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
64 2
|
1月前
|
移动开发 JavaScript 前端开发
HTML5 服务器发送事件(Server-Sent Events)详解
**服务器发送事件(Server-Sent Events, SSE)** 是一种用于构建单向实时通信的技术,允许服务器主动向客户端(通常是浏览器)推送更新。SSE 提供了一个简单的 API,非常适合实时应用,如新闻更新、天气变化、社交媒体通知等。SSE 基于 HTTP 协议,通过长连接实现数据传输。其主要优点包括简洁的 API、持久连接和自动重连功能。大多数现代浏览器都内置了对 SSE 的支持。通过简单的服务器端和客户端代码,可以轻松实现数据的实时推送和接收。
|
2月前
|
前端开发
Twaver-HTML5基础学习(37)network导出图片并下载
本文介绍了如何在Twaver-HTML5中将network导出为图片并提供下载,主要通过将network转换为canvas对象,然后转换为base64编码的图片进行展示和下载。
36 5

热门文章

最新文章