这不能再占用我更多的时间了。我已经尝试解决这个问题很长时间了。
我会给你我的整个场景,然后是什么问题。
我有这个网站。在一个页面上,用户可以在三种图像输入类型之间进行选择。
这是一个单选按钮组:
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,他/她可以从他们的计算机中选择一个文件(输入 type="file" 出现在 radio 组下),并且 img 标签 src 会使用此图像更新。这一次,我将存储在会话变量中的 src 将不是文件的路径(我知道这是出于安全原因),但 src 将是一个 base64 字符串。如果用户选择大图像,则图像非常大。
因此,现在我将此图像存储在会话变量中,可以是项目文件夹中包含的图像文件的路径,也可以是 base64 编码的图像。
我现在要做的是从 JavaScript 中的会话变量中获取这个值。我想将此图像传递给我在服务器端的代码。用于制作它的实际图像并将其上传到各个地方,但这部分并不是真正必要的。
我的问题是,在 JavaScript 中,我无法通过 POST 使用$.ajax
. 我认为 base64 字符串太大了,我不知道如何将其转换为其他内容,比如字节 []。
我应该怎么做?我想将用户选择的此图像传递给服务器端以进行进一步处理。然后在服务器端,我想将其转换为实际的 Image 对象或 BufferedImage。
这是它现在看起来的代码块:
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)}
});
}