【问题标题】:Losing information when uploading large base64 image through POST request通过 POST 请求上传大型 base64 图像时丢失信息
【发布时间】: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


【解决方案1】:

我找到了解决方案。事实证明,当我将数据放在文本框中时,它被截断了。我不知道文本框有最大限制,但就我而言,文本框将我的数据截断为 524288 个字符。

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2020-04-16
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多