【发布时间】: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应该是20M。 Read 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