将图像(作为数据:image/png:base64)上传到网络服务器

Chr*_*ris 2 javascript php forms jquery file-upload

我在这样构建的网页上有一个图像:

<img src="data:image/png;base64;...." />
Run Code Online (Sandbox Code Playgroud)

图像的内容来自用户粘贴到浏览器中.我的问题是如何将图像上传到网络服务器(如果重要的话,PHP).

Che*_*ery 7

1)使用javascript(或用户提交的数据)获取src属性

2)按原样将其提交给服务器或者剪切并提交所有内容base64;(AJAX或POST,方法GET可能不适合大图像)

3)在服务器端解码base64(base64;如果没有切断后的所有内容),将结果保存为二进制 - 它是一个图像.

而已.

ps:只是一个提醒 - 仔细考虑可能的代码注入.检查提交的数据或有人将上传编码的PHP脚本.禁用上传文件夹中的php引擎,并验证最终结果是否为实际图像(例如,在GD库的帮助下).即使脚本无法在您的服务器上运行,它也可能被用于使用php脚本对其他服务器的恶意请求.

  • @Chris您必须先验证数据,然后再将其保存在服务器上.正如我所写,你可以检查你是否能够通过GD模块获得图像的宽度和高度.下一步不是使用用户提供的文件扩展名保存数据.我会尝试在不更改参数的情况下"调整"图像大小,从而节省结果.这样,您可以确保只有通过GD传递的数据. (2认同)