在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递大的base64字符串
这不能再占用我的时间了。我已经尝试解决这个问题很久了 我会给你我的整个场景,然后是什么问题 我有这个网站。在一个页面上,用户可以选择三种图像输入类型 这是一个单选按钮组:在javascript中将base64图像转换为文件,或者如何使用jquery ajax传递大的base64字符串,javascript,jquery,image,scala,base64,Javascript,Jquery,Image,Scala,Base64,这不能再占用我的时间了。我已经尝试解决这个问题很久了 我会给你我的整个场景,然后是什么问题 我有这个网站。在一个页面上,用户可以选择三种图像输入类型 这是一个单选按钮组: o Twitter Logo o Twitter Profile Picture o Upload picture 如果用户选择选项1或2,img标记src将使用本地项目文件更新(http://localhost:9000/public/images/image.png)此图像src存储在html5 Web会话存储变量中 如
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,他/她可以从他们的计算机中选择一个文件(收音机组下会出现一个input type=“file”),img标签src将用该图像更新。
这次,我将存储在会话变量中的src将不是文件的路径(我知道这是因为安全原因),但src将是base64字符串。如果用户选择了一个大的图像,这是一个非常大的图像
现在我把这个图像存储在session变量中,要么是项目文件夹中包含的图像文件的路径,要么是base64编码的图像
我现在要做的是从JavaScript中的会话变量获取这个值。我想将此映像传递给服务器端的代码。制作一个真实的图像并上传到各个地方,但这部分并不是真的需要
我的问题是,在JavaScript中,我无法使用$.ajax
通过帖子传递此消息。
我认为base64字符串太大了,我不知道如何将其转换为其他内容,比如字节[]
我该怎么办?
我想将用户选择的此映像传递到服务器端以进行进一步处理。
然后在服务器端,我想将其转换为实际的图像对象,或BuffereImage
下面是它现在的外观代码块:
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-3MB,我希望你的服务器设置允许你发布大小为2-3MB的数据 除此之外,我认为将图像路径名放在base_64中不是一个好主意。如果你认为有人可以从你的网站中提取数据,那么他/她可以对你的完整网站概念做任何事情 因为任何人都可以看到图像路径,即使你在网页上显示一些图像 不过,若您认为不需要seision中的路径,可以将其保存在键值对中的某个文件中,也可以将其保存在数据库中
或者,您还可以做一件事,将图像文件名保留在您的seision数据中,并在您希望在服务器端内部使用它时预先指定确切的路径。您不能正常上载文件,而不是先将其转换为base64吗?当然,不要忘记将
enctype=“multipart/form data”
添加到
标记中。真正大的字符串意味着什么?通常情况下,即使以MBs为单位,POST的大小也非常大&我认为您没有大于2-3mb的base64字符串。如果仍然有,则可以在服务器配置中设置POST大小。@user1679849我没有转换它,当我获取它以将其存储在会话变量中时,它是base64。我的网站在每个步骤上都有几个“步骤”,用户选择一些东西,这些值存储在会话变量中,直到我收集所有变量值的最后一页。包括该图像,该图像在该页面上以base64格式存储在会话变量中。@Peeyus我的意思是,当用户选择文件大小为50kb的图像时,存储在会话变量中的base64字符串的长度约为20k个字符。