【问题标题】:Uploading large images using jQuery and PHP使用 jQuery 和 PHP 上传大图像
【发布时间】:2015-03-28 05:01:44
【问题描述】:

我正在使用 jQuery 和 PHP 将图像上传到服务器并返回裁剪图像的 JSON。
我的 JavaScript 代码是:

$('document').ready(function () {

            $('#stat').hide();

            $('#file').on('change', function () {
                var fd = new FormData($('#target')[0]);
                $('#display > img').remove();
                $('#stat').show();

                $.ajax({
                    url: '<?php echo base_url('crop/upload') ?>',
                    type: "POST",
                    data: fd,
                    timeout: 1000 * 100,
                    contentType: false,
                    processData: false,
                    success: function (data, textStatus, jqXHR) {

                        $('#stat').hide();
                        $('div > img').remove();
                       console.log(data);
                        console.log(data[1].thumb);
                        $('#display > img').remove();
                        var img = $('<img>');
                        img.attr('src', data[1].thumb);
                        img.appendTo('#display')
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                       console.log(textStatus);
                    },
                    dataType: 'json'
                })

            })

        })

但每当图像大小大于 2 MB 时,我都会在 JS 控制台中看到解析错误。我尝试设置超时,但没有成功。

有什么问题?浏览器是否设置了超时时间?

如何让用户上传大图像而不会出现解析错误

【问题讨论】:

  • 您也有 PHP 超时,以执行脚本。默认值为 30 秒。在你的php.ini中增加它
  • @Mysteryos 我尝试将 max_execution 时间设置为 5 分钟,但在 1.2 分钟后仍然返回 parseerror ?
  • 上传的文件大小也有限制。因主机而异。 Apache: LimitRequestBody 应该为零。 **Nginx:** client_max_body_size 应该是 20MRead this article to tweak your server limits
  • @Mysteryos max_upload_filesize 设置为 32M,我尝试只运行 2MB jpeg 文件
  • @Mysteryos 当前我已将 max_execution 时间设置为 3000 秒,但它在 40 秒后超时。为什么会这样?

标签: javascript php ajax image-uploading parse-error


【解决方案1】:

增加分配给 PHP 的内存将解决这个问题。

你可以这样做:

1- 编辑 php.ini

memory_limit = 128M; 或者把下面的代码放到.htaccess

php_value memory_limit 128M

2-如果您经常收到此错误并且上述解决方案不起作用,请联系您的房东。在大多数共享主机中,都有最大 memory_limit。如果您获得最大 32Mb,则无法将内存限制设置为 64Mb。

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2015-05-29
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2012-09-16
    相关资源
    最近更新 更多