【问题标题】:Ajax upload image failureAjax上传图片失败
【发布时间】:2016-04-11 22:02:25
【问题描述】:

我正在尝试使用 ajax post 在服务器上上传图片。

我遇到了大尺寸图片的问题。例如,我可以毫无问题地上传1MB 图像,但是当我尝试上传5MB 图像文件$_FILES['errors'] 时返回Please select file 消息。

我当前使用的 ajax 调用。

    var request = $.ajax({
        url: '/uploadguides',
        dataType: 'json',
        cache: false,
        contentType: false,
        processData: false,
        data: formData,
        type: 'post',
        async: false
    });

php.ini 我设置了post_max_size = 3Mupload_max_filesize = 64M

我以为是post_max_size 限制问题,我已将其增加到20M 但结果相同

【问题讨论】:

  • post_max_size = 3M 增加到超过5 MB
  • 我连10M都试过了,没区别
  • 在那之后你有没有重启你的apache服务。
  • remove async:false 不好用,可能你也想在 ajax 中添加超时选项。
  • @Jai maby,但它不能解决我的问题。

标签: php jquery ajax


【解决方案1】:

首先 - 我通过谷歌搜索图片找到了这个:

https://github.com/blueimp/JavaScript-Load-Image

第二,为什么要使用 AJAX?更改源时,内置的Javascript Image设置不会自动加载到图像中吗?像这样:

var img = new Image();
img.src = "Path to image";

如果您使用上述方法 - 您所做的就是检查图像的宽度以了解它是否已加载。只需做一个小函数来检查文件是否已像这样加载:

function checkImage()
{
     if( img.width < 1 ){
        setTimeout( "checkImage()", 100 );
        return;
        }

     tellMeItIsLoaded();
}

或者看看这篇文章

Load Image from javascript

【讨论】:

  • 这是个好话题,但不是我的问题的解决方案,我知道文件是否在浏览器中上传,我有这样的检查,但在我的情况下 $_POST 和 $_FILES 是空的。
  • 您需要发布图片链接,以便人们可以尝试上传。也许文件而不是javascript有问题。毕竟,我发布的所有内容都可以处理任何大小的文件。所以-首先-如果您甚至不打算尝试我们的解决方案,那么没有任何理由尝试帮助您,其次-如果您尝试了我们的解决方案并且它们不起作用-那不是因为我们发布但因为其他东西不起作用,只留下文件本身。请记住 - 并非全世界的一切都必须通过 AJAX。
  • 我很高兴您的解决方案,但不幸的是我面临的问题是 wamp 服务器问题,我已将其升级到最新版本配置的 php 并且它工作正常,服务器有问题而不是代码实际上有问题,我尚未测试您的解决方案,因为我确定我在浏览器中有文件只是为了移动它,如果它适用于较小尺寸的文件,则它必须适用于较大尺寸但似乎 post_max_size 没有在服务器上升级......
  • 很高兴你让它工作。如果所有这些工作都是在您的个人计算机上完成的——那应该被提及。最后但同样重要的是 - 您应该将图像加载到 Photoshop 中并将 dpi 设置为 96dpi。这是现在用于 LCD 和 LED 屏幕的标准 dpi。因此,在 96dpi 的屏幕上使用 300dpi 的图像并不能得到更好的图像。它只是使图像更大。此外,如果您使用的颜色少于 37000 种,您可能需要查看 GIF 文件格式。 GIF 文件格式在 89a 文件格式中每行可以做 256*256 色。它可以使 5MB 的图像变成 256KB 的图像。
猜你喜欢
  • 1970-01-01
  • 2016-08-21
  • 2014-10-25
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多