我正在为内部工具制作一个(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
答案 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