在PHP中将本地图像blob转换为base64

时间:2017-09-20 21:45:56

标签: javascript php base64 filereader

我正在为内部工具制作一个(HTML)表单。用户可以填写有关问题的数据并附加屏幕截图。然后通过ajax将此表单提交给PHPMailer进行发送。问题在于屏幕截图。由于系统限制,我无法让用户实际将文件上传到服务器。

目前,我正在使用HTML5文件阅读器来选择文件。然后我将图像blob转换为base64并将它们发送到PHPMailer,以转换为附件。这实际上很有效。但是,我遇到了文件大小问题。特别是1000px x 1000px(402KB)的测试图像。生成的base64字符串长度超过一百万个字符,请求返回 413(请求实体太大)

据我所知,base64不是传输大图像的有效方法,我看过各种关于从数据库中检索/转换图像blob的帖子。我无法找到的是有关检索本地图像blob并将其转换为base64的信息。

我的图片blob网址如下所示: 斑点:http://example.com/18960927-e220-4417-93a4-edb608e5b8b3

是否可以在PHP中获取此本地图像数据,然后将其转换为base64?

我无法发布大部分来源,但是,以下内容将让您了解我如何使用filereader

SessionHandler

2 个答案:

答案 0 :(得分:1)

您可以POST File对象php

fetch("/path/to/server", {
  method: "POST"
  body: files[i]
})
.then(response => console.log(response.ok))
.catch(err => console.error(err));

答案 1 :(得分:0)

我认为它的nginx错误,请更改nginx.conf文件中的 client_max_body_size 值。

例如:

# set client body size to 2M #
client_max_body_size 2M;

PHP配置(可选)

您的php安装也限制了上传文件的大小。编辑php.ini并设置以下指令。

;This sets the maximum amount of memory in bytes that a script is allowed to allocate
memory_limit = 32M

;The maximum size of an uploaded file.
upload_max_filesize = 2M

;Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize
post_max_size = 3M