在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个字符。