【问题标题】:send binary data in JSON以 JSON 格式发送二进制数据
【发布时间】:2016-04-27 19:01:43
【问题描述】:

我想将一些数据(包括图像)作为 JSON 发送到休息服务,这些数据将存储在数据库中,然后我需要能够检索它并将其显示回来。 我的问题是图像部分,我需要将其以 json 格式发送,将其转换为字节以将其保存为 DB 中的 blob,然后恢复该过程以将其显示给用户 当我获得图像源属性的值时,我得到类似“数据:图像/png;base64,VBORw0 ....”的内容我应该在服务器端做什么以保存在数据库中,我应该做什么我将其发送回用户,以便在将图像设置为源属性的值时显示图像

我现在正在做的是 1.从src属性中获取img uri,去掉URI的开头 markerImg.replace(/^data:image/(png|jpg|jpeg);base64,/, ""); 2. 然后我将结果作为完整 json 对象的一部分发送。 3. 在服务器端,我使用 DatatypeConverter 将值转换为字节并将其保存在数据库中 DatatypeConverter.parseBase64Binary(imageAsString) 4. 当我将 josn 对象发送回服务器时,我从数据库中获取 imageAsBytes,将其转换为字符串并附加“data:image..”部分并发回 dataObject.getProperties().setMarkerImg("data:image/png|jpeg|jpg|jif;base64,"+ImageHandler.getImageStringFromBytes(imageAsBytes));

这可行,但我想看看我所做的是否正确以及是否有任何简单的方法

【问题讨论】:

    标签: json image


    【解决方案1】:

    在服务器上,您在将其存储为 blob 之前对其进行 base64 解码。或者更好的是,根本不将其存储为 blob,对其进行解码并将图像放入目录和数据库中,创建一条引用您刚刚创建的文件的路径和文件名的记录。

    当您发回它时,不要发回图像数据,发回一个 URL(可能带有与数据库中的 blob/文件引用一起存储的 id),以便当您向该 URL 发出请求时,它会查找 blob 并将其作为具有正确标题的图像提供。

    【讨论】:

    • 感谢 Adam,我需要将其保存为 blob,这是必需的
    • 没问题,答案是保存为blob还是文件都有效。
    • TIA,请您检查一下我添加的更新,并给我您的意见
    猜你喜欢
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2023-03-31
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多