首页 文章

在javascript中将base64图像转换为文件或如何使用jquery ajax传递一个大的base64字符串

提问于
浏览
0

这不能占用我的时间 . 我现在试图解决这个问题很长一段时间 .

我会告诉你我的整个场景,然后问题是什么 .

我有这个网站 . 在一页上,用户可以在三种图像输入类型之间进行选择 .

这是一个单选按钮组:

o Twitter Logo
o Twitter Profile Picture
o Upload picture

如果用户选择选项1或2,则使用本地项目文件( http://localhost:9000/public/images/image.png )更新img标记src,并将此图像src存储在html5 Web会话存储变量中 .

如果用户选择选项3,他/她可以从他们的计算机中选择一个文件(输入类型=“文件”出现在收音机组下面),并且用该图像更新img标签src . 这次,我将存储在会话变量中的src将不是文件的路径(我知道这是出于安全原因),但src将是base64字符串 . 如果用户选择一个大图像,这是一个非常大的 .

所以现在我将这个图像存储在会话变量中,或者是项目文件夹中包含的图像文件的路径,或者是base64编码的图像 .

我现在要做的是从JavaScript中的会话变量中获取此值 . 我想将此图像传递给服务器端的代码 . 为了制作它的实际图像并将其上传到地方,但这部分并不是必需的 .

我的问题是在JavaScript中,我无法通过POST使用 $.ajax 传递此信息 . 我认为base64字符串太大了,我无法弄清楚如何将其转换为其他内容,比如一个byte [] .

我应该怎么做?我想将用户选择的图像传递给服务器端以进行进一步处理 . 然后在服务器端我想将它转换为实际的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)}
});
}

1 回答

  • 1

    好吧我得到了你的观点,但我想说的可能是你的字符串包含20K字符但我不认为它可以大于2-3 Mb我希望你的服务器设置允许你发布大小为2的数据-3 MB .

    除此之外,我认为将图像路径名称放在base_64中并不是一个好主意 . 如果您认为某人可以从您的视频中提取数据,那么他/她可以使用您的完整网站概念做任何事情 .

    因为即使您在网页上显示某些图像,任何人都可以看到图像路径 .

    如果你认为你不想在视觉中使用路径,你可以将它保存在键值对中的某个文件中,或者你可以将它保存在数据库中 .

    或者,您可以再做一件事,只需将图像文件名保留在您的视频数据中,并在您希望在服务器端内部使用它时添加准确的路径 .

相关问题