【发布时间】:2016-11-05 01:46:07
【问题描述】:
我正在尝试上传图像字符串(base64)并将其保存为图像服务器端。
问题是,当我上传一张大图片(1200 像素宽 jpg 全画质)时,我在上传时丢失了一些信息。
我的代码可以正常工作,因为较小的图像可以上传和保存。
我已经检查了我的 ini php 文件,并且最大文件大小上传和最大帖子足够高,这真的不应该是问题 (40 m)。
我的信息是这样传递的:
从手机摄像头获取base64图片数据(可以,可以在客户端显示图片)
将图像数据放入隐藏的表单域(此时不会丢失任何信息)
通过 ajax POST 请求发送数据(没有错误或任何东西)
从 php POST 变量接收图像字符串(这是我丢失信息的地方)
--上传前的strlen:5,253,100
--上传后的strlen:524,288
- 使用 base64_decode 保存图像(工作正常,可以正确保存较小的图像)
现在,当我上传较大的图片时,我没有收到任何错误。代码仍然会吐出一张图片,但图片只是原始图像的上四分之一左右,其余部分为灰色。
我会发布一些我的代码,但我相当有信心它不在我的代码中,因为在我增加图像大小之前一切都运行良好。在 POST 请求期间,我肯定会在某些时候丢失信息。
任何可以为我指明正确方向的提示都会很不错。感谢阅读。
【问题讨论】:
-
看起来你有一些限制设置为 512k,检查stackoverflow.com/questions/6135427/…
-
检查 php.ini 是不够的。 PHP 设置可以在 apache 级别(.htaccess/.conf 中的
php_value)和运行时(ini_set())被覆盖。您需要在您的上传脚本中检查phpinfo()以获得生效的设置。 -
如果你不使用
ajax,你可以在你的服务器上使用普通的post方法发送5MB的文件数据吗? -
我的 post_max_upload 和我的 upload_max_filesize 在 phpinfo() 和我的 php.ini 文件中是一样的。
标签: javascript php ajax