如何将图片保存到localStorage并在下一页显示?

2023-11-29

所以,基本上,我需要上传单个图像,将其保存到 localStorage,然后将其显示在下一页上。

目前,我上传了 HTML 文件:

<input type='file' id="uploadBannerImage" onchange="readURL(this);" />

其中使用这个函数来在页面上显示图像

function readURL(input) 
{
    document.getElementById("bannerImg").style.display = "block";

    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            document.getElementById('bannerImg').src =  e.target.result;
        }

        reader.readAsDataURL(input.files[0]);
    }
}

图像立即显示在页面上供用户查看。然后他们被要求填写表格的其余部分。这部分工作完美。

表格填写完毕后,他们会按下“保存”按钮。按下此按钮后,我将所有表单输入保存为localStorage字符串。我需要一种方法将图像另存为localStorage item.

保存按钮还将引导他们进入新页面。这个新页面将在表格中显示用户数据,图像位于顶部。

如此简单明了,我需要将图像保存在localStorage一旦按下“保存”按钮,然后从下一页借出图像localStorage.

我找到了一些解决方案,例如这把小提琴 and 这篇文章位于 moz://a HACKS.

尽管我仍然对其工作原理感到非常困惑,而且我只需要一个简单的解决方案。基本上,我只需要通过找到图像getElementByID一旦按下“保存”按钮,然后处理并保存图像。


对于也需要解决这个问题的人:

首先,我用以下方法抓取图像getElementByID,并将图像保存为 Base64。然后我将 Base64 字符串保存为我的localStorage value.

bannerImage = document.getElementById('bannerImg');
imgData = getBase64Image(bannerImage);
localStorage.setItem("imgData", imgData);

以下是将图像转换为 Base64 字符串的函数:

function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    var dataURL = canvas.toDataURL("image/png");

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

然后,在下一页上,我创建了一个带有空白的图像src像这样:

<img src="" id="tableBanner" />

当页面加载时,我直接使用接下来的三行来获取 Base64 字符串localStorage,并将其应用到有空白的图像上src我创建:

var dataImage = localStorage.getItem('imgData');
bannerImg = document.getElementById('tableBanner');
bannerImg.src = "data:image/png;base64," + dataImage;

在很多不同的浏览器和版本中测试了它,它似乎工作得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将图片保存到localStorage并在下一页显示? 的相关文章

  • 在剑道组合框中动态添加项目

    如果你们中有人使用过 kendo ui 请告诉我如何在 kendo 组合框中动态添加新项目 我尝试在谷歌和其他地方搜索 我的结论是剑道中没有这样的功能 以供参考 JSBIN http jsbin com ebutaw 2 edit sour
  • 在 Express Nodejs 中将图像文件转换为 Base64

    我正在尝试将图像文件转换为base64 这样我就可以以base64字符串形式存储在mongoDB中 这就是我尝试这样做的方式 router post file upload function req res function base64
  • 将字符串转换为整数 JSP

    我是一个使用JSP的初学者 我想使用用户选择的最大范围显示递增整数的列表 输入 6 应显示以下内容 1号 number 2 number 3 number 4 number 5 number 6 输入 jsp
  • 当输入字段处于焦点时,占位符不会消失

    当用户选择字段时 表单上每个输入字段的占位符值应该消失 但事实并非如此 文档类型是 HTML5 http dailyspiro com index html http dailyspiro com index html
  • Vuetify 等高 v-tab-items

    请告知如何使 vuetify v tabs 内容显示在等高块中 我在文档中找不到该组件的选项可以帮助高度对齐 By default v tab item height depends on its own content height 布局
  • CSS3、WebKit 过渡顺序?如何排队等候转场?

    我有以下内容 webkit transition property top bottom z index webkit transition duration 0 5s 问题是我不希望 z index 在顶部和底部完成之前转换 有没有办法告
  • jquery循环遍历表,为每一行和td连接值

    我有一张有几行的桌子 每行都有一个产品字段 一个等级字段和一个系列字段 然后每个可用尺寸都有几个复选框 表中的一行如下所示 table class authors list border 0 tr td style font size 10
  • jQuery UI:将可排序从手风琴内部拖动到外部

    我有两个相连的可排序列表 一个只是在页面上 另一个在手风琴内 我使用手风琴作为其他列表的容器 我的目标是用户可以打开手风琴并将项目从该列表中拉到页面上 它有效 除了占位符在离开手风琴时消失 我尝试过 helper clone 并增加 zIn
  • 使用 JavaScript 在 HTML 表中动态添加行并通过提交按钮获取每个文本框的文本框值

    我有一个可以动态添加行的表 当我提交保存按钮时 我想将每行中的数据获取到 php 数组 请有人帮我解决这个问题 我是java脚本的新手 对此知之甚少 谢谢你
  • 基于mysql表中唯一电子邮件地址的唯一代码?

    我有一个 mysql 表 它将存储用户电子邮件地址 每个地址都是唯一的 并且是主字段 和时间戳 我添加了另一列名为 unique code varchar 64 utf8 unicode ci 我非常感谢您提供的帮助 a 生成5位字母数字代
  • jQuery:计算数百个元素的点击次数

    这是我在SO 的第一个问题 基本上 我的页面上有大量元素 我想计算并显示用户单击每个元素的次数 但为此我需要为每个元素定义变量 难道就没有更简单的方法吗 对于一个元素 var counter 0 container on click fun
  • ArrayBuffer 到 String、String 到 ArrayBuffer 方法

    这个问题过去已经得到了答案 但我肯定地说它仍然没有答案 一般而言 几乎都有关于 ArrayBuffers 的文档 更不用说特定应用程序了 我已经研究了好几天了 没有任何结果 本质上 我需要尝试转换从文件读取器获得的 ArrayBuffer
  • 用输入字段 Javascript/Angular2 替换某些单词

    我有一根绳子 我喜欢橙色 蓝色 黑色 粉色 玫瑰色 黄色 白色 黑色 是否可以用输入字段替换黄色和黑色 以便我可以输入自己的颜色 const a string I like orange blue black pink rose yello
  • 从前端更改记录顺序

    我在编写下一个功能时遇到问题 我希望用户能够重新排列记录并更改 display order 值 我使用 Jquery UI 的可拖放功能来促进这一点 我可以看到如何简单地交换 display order 值 但我想为一条记录设置一个显示顺序
  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • 如何测试聊天网络应用程序

    我正在开发chat应用程序 在服务器上使用 node js socket io 模块 在客户端上使用 javascript 随着它变得越来越复杂 我厌倦了通过跨浏览器单击来测试不同的使用场景 现在我使用不同的浏览器来分离cookie 因此
  • 尝试导入错误:“app”未从“firebase/app”导出(导入为“firebase”)

    遇到一个非常奇怪的问题 当尝试导入 firebase 时 出现以下错误 node modules firebaseui dist esm js Attempted import error app is not exported from
  • 如何在 leaflet.js 中设置 layer.control 的样式?

    我正在尝试更改图层控件中的默认下拉菜单图标 我希望图标旁边有文字 有什么办法可以做到这一点吗 也许使用 JQuery 和 CSS 我正在开发一个基于此示例的传单项目 http leafletjs com examples layers co
  • Bootstrap 表单助手未选择完整的国家/地区名称

    我添加了引导表单助手来列出国家及其州 最初 它根本没有选择国家名称 但我设法用 jQuery 检索国家 地区名称 但它没有显示完整名称 这是表单的完整代码 div class signup form div class container
  • 在 JS 中动态创建函数

    我正在为 JS 游戏创建 AI 引擎 它是由有限状态机组成的 我正在从 XML 加载状态数及其变量值 我还想加载该行为 并且由于我没有时间创建脚本语言 所以我认为在外部文件 XML 节点内 上 插入 JS 代码并在要求 类似的东西

随机推荐

  • 如何在 JavaScript 中使用 fetch() 读取 JSON 文件?

    如何使用 javascript 中的 fetch 函数读取本地 JSON 文件 我有一个包含一些转储数据的 JSON 文件和一个读取服务器上 JSON 文件的函数 例如 readJson console log this let vm th
  • 如何将数字附加到 XSL 文件内的 ID

    我有以下 XSL 文件 该文件将重复多次 在我的例子中为 4 次
  • 如何从另一个线程更新 GUI?

    我的线程有问题JSF申请 也许有人可以帮助我 启动后 我运行新线程 该线程正在进行一些后台操作 该线程正在工作while true loop 但当它无能为力时 它会调用wait 它正在循环工作 因为我必须调用notify 在一些用户操作之后
  • BeanUtils 复制属性:注册 ConvertUtils

    我有用 Java 编写的 Web 应用程序 我在用着BeanUtils copyProperties方法 如果一个date字段为空 会抛出错误 我通过使用解决了它ConvertUtils register method ConvertUti
  • Spring Data Neo4j:使用嵌入的 Neo4j 服务器:JAR 打包

    我终于能够在我的 java 应用程序中创建一个使用嵌入式数据库的服务器实例 如下所示here 当我从 Eclipse 运行它时 它可以正常工作 但这实际上不是我的目的 除其他事项外 我的应用程序向数据库提供新的节点和关系 我有一个 Neo4
  • OWL 2 罗化

    在描述逻辑中 有一个概念叫 rolification OWL 和规则 第 3 2 节 它将概念 类 转换为角色 属性 例如 当我们滚动时R x 我们得到r x x 该技术对于在深度学习中表达一些规则很有用 我们如何在 OWL 2 中做到这一
  • 使用 Mule 发送格式化邮件

    我正在使用 Mule 发送电子邮件 我需要为发送的文本添加格式 邮件的内容是有效负载 其中包含我在 Java 方法中形成的字符串 并使用表达式转换器发送到流程 我需要向该字符串添加格式 粗体 下划线 颜色 我该怎么做 这是我的流程的摘录
  • 如何使用 PHP GD 显示动态生成的内嵌图像

    我正在尝试使用 PHP GD 合并图像来动态生成图像 我想知道是否有一种方法可以在我的网页中显示图像 而不需要将其存储在服务器上的某个位置 例如 我创建了以下代码来合并图像 function create image main image
  • 乘客安装时出现转换错误。对 nginx 模块有影响吗?

    在OS X 10 6 8下安装passenger 首先在rbenv下 然后卸载rbenv后 也在rvm下 Mini user gem install passenger 正在生成转换错误 unable to convert xE4 to U
  • Pygame 需要“for event in pygame.event.get()”以免崩溃

    该程序像这样工作正常 但是 我不明白为什么它需要无用的for event in pygame event get None in the gameOverwhile 语句里面game loop 如果您能找到一种方法来删除它或解释为什么没有它
  • 使用内置 Python 模块填写 Web 表单数据

    好吧 我已经在我的冒险中使用了 mechanize requests beautiful soup 甚至 selenium 来做这样的事情 我得出的结论是 urllib 和其他默认模块是最好的方法 唯一的问题是我根本不知道如何使用它 那么有
  • aspnet core 应用程序中的 Autofac.Multitenant 似乎无法正确解析租户范围的依赖项

    我正在升级利用 Autofac Multitenant 框架的多租户 dotnet 核心解决方案 我没有太多运气让租赁解决方案正常工作 我在这里创建了一个简单的问题演示 https github com SaltyDH AutofacMul
  • 在 python 中使用绘制数据的微型版本作为图例句柄

    有没有办法使用 matplotlib 中的图形中绘制的线作为图例中的句柄 例如 我在想 在这个基本代码中 而不是图例中的直线 有一个我绘制为手柄的正弦波的小版本 import matplotlib pyplot as plt import
  • 在 RDLC 报告中添加数据集时 Visual Studio 2013 崩溃

    当我尝试将数据集添加到 asp net 项目中的任何 RDLC 报告时 Visual Studio 停止工作并重新启动 我尝试使用 VS 2012 和 2015 添加数据集 两次尝试都产生了与您相同的错误 这种情况只发生在我的 VS 项目之
  • Windows 8.1 64 位中的 IBM MobileFirst Platform 安装

    我正在使用我的办公室笔记本电脑 Lenovo vV310 8GB RAM 64 位操作系统 Windows 8 1 过去几天我一直在尝试修复 IBM Mobile First Platform 的安装问题 我从链接下载了 IBM Mobil
  • HTML5 直播

    对于学校 我需要建立一个 HTML5 直播网站 他们有一个一直在使用的 Flash 流播放器 但现在希望它改用 HTML5 我怎样才能做到这一点 我尝试使用视频标签 但无法正常工作 下面是我的代码 有人能指出我正确的方向吗
  • 将两个同名的 .swift 文件添加到项目中

    我正在尝试将 swagger 客户端集成到我的项目中 我能够从 swagger 生成类 Swagger for swift 3 使用 Alamofire 进行 newtork 操作 问题是生成的类名称之一是 Response Alamofi
  • 无法打开该文件,因为您无权查看该文件

    imageData NSData dataWithContentsOfURL self pdfFileUrl options NSDataReadingMappedAlways error error NSLog error localiz
  • sublime 3 制表符和空格不匹配

    我已经浏览网页3次了 但仍然没有解决方案 我有一个简单的 js 文件 我希望我的制表符是 4 个空格而不是 2 个 我将首选项设置更改为选项卡大小为 4 更改了语法特定设置 一切 但仍然是同样的问题 有任何想法吗 Click On状态栏上的
  • 如何将图片保存到localStorage并在下一页显示?

    所以 基本上 我需要上传单个图像 将其保存到 localStorage 然后将其显示在下一页上 目前 我上传了 HTML 文件