Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用base64编码从前端到后端的大图像_Javascript_Rest_File Upload_Base64_Frontend - Fatal编程技术网

Javascript 不使用base64编码从前端到后端的大图像

Javascript 不使用base64编码从前端到后端的大图像,javascript,rest,file-upload,base64,frontend,Javascript,Rest,File Upload,Base64,Frontend,我们的前端是应用程序,后端是RESTAPI。我们需要发送一些由我们的PWA用户选择的非常大的图像到后端(几十兆字节大小)。目前,PWA用户从手机文件系统中选择一个图像(因此他可以在PWA UI的手机屏幕上看到该图像),然后按下“上载”按钮,通过REST API将其发送到后端 最初,为了快速实现此功能,我们通过网络发送base64格式的图像数据,并将其作为字符串以相同的格式存储在DB字段中 现在,我们决定摆脱base64编码文件发送,在后端,我实现了以二进制格式接收多部分/表单数据,并将其存储在数

我们的前端是应用程序,后端是RESTAPI。我们需要发送一些由我们的PWA用户选择的非常大的图像到后端(几十兆字节大小)。目前,PWA用户从手机文件系统中选择一个图像(因此他可以在PWA UI的手机屏幕上看到该图像),然后按下“上载”按钮,通过REST API将其发送到后端

最初,为了快速实现此功能,我们通过网络发送base64格式的图像数据,并将其作为字符串以相同的格式存储在DB字段中

现在,我们决定摆脱base64编码文件发送,在后端,我实现了以二进制格式接收多部分/表单数据,并将其存储在数据库字段中,使用
bytea
类型。好极了

然而,出于某种原因,我们的前端开发人员告诉我,他不能简单地获取二进制图像数据,因为PWA UI在从文件系统加载后将其转换为base64本身。UI DOM模型将图像以这种格式保存在
元素中。所以,要将数据从UI发送到后端,他需要事先进行base64解码


我的问题是如何在UI中以二进制格式显示图像而不使用base64编码,或者如何避免将base64和二进制数据同时保存在前端(记住我们的图像大小为几十兆字节)?

好吧,一旦在后端获得字节,您需要将它们存储在前端可以访问的文件中。前端只需使用
img
标记,其中
src
指向上传的文件。应该不需要使用Base64编码/解码explicitly@user1538301不对。图像文件的来源是前端。后端只是从前端接收图像并将其存储在数据库中以备将来的请求。在将图像发送到后端之前,用户需要能够在其PWA UI上看到它,该UI强制执行base64编码。为什么要将它们存储在数据库中而不是作为文件?它们是文件。您的前端开发人员遇到了问题,因为浏览器不应该简单地呈现任意字节数组。我的意思是,你当然可以使用画布,但当浏览器自己渲染图像时,你为什么要这样做呢?@user1538301我们将所有类型的数据存储在PostgresSQL中(我们需要进行复杂的查询以获取所需的数据,还有图像)。此外,出于安全原因,后端仅公开RESTAPI端点。不直接访问后端文件系统或so.base64不是强制性的,您可以在客户端上使用二进制图像,请参阅和