Convert base64 image to file in javascript or how to pass a big base64 string with jquery ajax
这不能占用我更多的时间。我已经尝试解决这个问题很长时间了。
我会给你我的整个场景,然后是问题所在。
我有这个网站。在一个页面上,用户可以在三种图像输入类型之间进行选择。
这是一个单选按钮组:
1 2 3 | o Twitter Logo o Twitter Profile Picture o Upload picture |
如果用户选择选项 1 或 2,则使用本地项目文件 (
如果用户选择选项 3,他/她可以从他们的计算机中选择一个文件(输入类型="file" 出现在 radio 组下)并且 img 标签 src 将使用此图像更新。
这一次,我将存储在会话变量中的 src 将不是文件的路径(我知道这是出于安全原因),但 src 将是一个 base64 字符串。如果用户选择大图像,则图像非常大。
所以现在我将此图像存储在会话变量中,可以是项目文件夹中包含的图像文件的路径,也可以是 base64 编码的图像。
我现在要做的是从 JavaScript 中的会话变量中获取这个值。我想将此图像传递给我在服务器端的代码。用于制作它的实际图像并将其上传到各个地方,但这部分并不是真正必要的。
我的问题是,在 JavaScript 中,我无法使用
我认为 base64 字符串太大了,我不知道如何将其转换为其他内容,比如 byte[]。
我该怎么办?
我想将用户选择的此图像传递给服务器端以进行进一步处理。
然后在服务器端,我想将其转换为实际的 Image 对象或 BufferedImage.
这是它现在的样子的代码块:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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 中并不是一个好主意。如果您认为有人可以从您的视野中获取数据,那么他/她可以对您的完整网站概念做任何事情。
因为即使您在网页上显示某些图像,人们也可以看到图像路径。
如果你认为你不想看到路径,你可以将它保存在键值对的某个文件中,或者你可以将它保存在数据库中。
或者您可以再做一件事,只需将图像文件名保留在您的视觉数据中