在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递一个大的base64字符串
Convert base64 image to file in javascript or how to pass a big base64 string with jquery ajax
这不能再占用我的时间了。我已经尝试解决这个问题很长时间了。
我会给你我的整个场景,然后问题是什么。
我有这个网站。在一个页面上,用户可以在三种图像输入类型之间进行选择。
这是一个单选按钮组:
o Twitter Logo
o Twitter Profile Picture
o Upload picture
如果用户选择选项 1 或 2,则 img 标记 src 将更新为本地项目文件 ( http://localhost:9000/public/images/image.png
),并且此图像 src 存储在 html5 Web 会话存储变量中。
如果用户选择选项 3,他/她可以从他们的计算机中选择一个文件(输入类型="文件"出现在单选组下),并且 img 标记 src 将使用此图像进行更新。这一次,我将存储在会话变量中的 src 不会是文件的路径(我知道这是出于安全原因),但 src 将是一个 base64 字符串。如果用户选择大图像,则非常大。
所以现在我把这个图像存储在会话变量中,要么是项目文件夹中包含的图像文件的路径,要么是 base64 编码的图像。
我现在要做的是从 JavaScript 中的会话变量中获取此值。我想将此图像传递给服务器端的代码。用于制作它的实际图像并将其上传到各个地方,但该部分并不是真正必要的。
我的问题是在 JavaScript 中,我无法使用 $.ajax
的 POST 传递它。我认为 base64 字符串太大了,我不知道如何将其转换为其他内容,例如一个字节[]。
我该怎么办?我想将用户选择的此图像传递给服务器端进行进一步处理。然后在服务器端,我想将其转换为实际的图像对象或缓冲图像。
下面是它现在外观的代码块:
function gatherSessionValuesAndGenerateCode(userEmail) {
var email = userEmail;
var category = getSessionValue("category");
var itemName = getSessionValue("itemName");
var service = getSessionValue("service");
var accountName = getSessionValue("accountName");
var action = getSessionValue("action");
var imageType = getSessionValue("imageType");
var imageFile = getSessionValue("imageFile");
var expirationDate = getSessionValue("expirationDate");
$.ajax({
type: "POST",
url: "http://localhost:9000/quikkly/business/create/generate",
data: {
email: email,
category: category,
itemName: itemName,
service: service,
accountName: accountName,
action: action,
imageType: imageType,
imageFile: imageFile, //This is making me feel ill, don't know how to solve it.
expirationDate: expirationDate
},
success: function(response){console.log("Horayyy "+response)}
});
}
我明白你的意思,但我想说的是,你的字符串可能包含 20K 个字符,但我认为它不能大于 2-3 Mb,我希望您的服务器设置允许您发布大小为 2-3 MB 的数据。
除此之外,我认为将图像路径名放在base_64不是一个好主意。如果您认为有人可以从您的视野中获取数据,那么他/她可以用您的完整网站概念做任何事情。
因为即使您在网页上显示某些图像,一个人也可以看到图像路径。
不过,如果您认为您不希望 path 出现在 seesion 中,您可以将其保存在键值对的某个文件中,或者您可以将其保存在数据库中。
或者,您可以再做一件事,只需将图像文件名保留在查看数据中,并在要在服务器端内部使用它时预先添加确切的路径。
- 一个javascript实现base64图像编码并将结果写入文本文件
- 读取一个本地文件,编码为base64,我想给用户一个将结果保存到文件的选项
- 我已经从d3图表中创建了一个base64图像,需要使用客户端javascript或angular将其发布到faceboo
- 将 Base64 字符串从 AS3 返回到 Javascript.这是一个错误或功能(还是我错了?
- 在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递一个大的base64字符串
- 将 Base64 编码的图像加密为另一个有效的 Base64 编码图像
- 使用缓冲区解码base64时出错.第一个参数必须是一个数字
- 缓冲区base64编码一个变量node.js
- 如何向PHP函数发送一个长度超过200000个字符的base64字符串,以便保存图像
- 函数,参数为image, width, height,并返回一个调整大小的base64图像数据
- 如何解码一个文件从base64编码与JavaScript
- 在Rails中通过参数发送base64图像是一个好做法吗?
- 一个画布,我想加载一个Base64字符串,表示png图像,但只是显示一个空白的白色框
- javascript,从Base64字符串创建一个要上传的图像文件
- 我如何使用php回显一个base64字符串作为图像到浏览器
- 发送一个base64文件到Node.js套接字.io服务器
- 如何在Sencha Touch 2中定义一个编码base64图像作为背景
- 一个更好的测试base64 URI支持(我可以在JS中创建一个大的base64编码的图像吗?)
- 如何减少base64图像数据并保存到另一个变量
- 在一个img src标签上显示不同格式的普通图像,以及base64图像