在使用jQuery提交之前,如何检查POST数据大小?

时间:2012-11-16 16:11:38

标签: jquery file-upload postdata

我有一个网络应用程序,允许用户添加多个图像,然后在按下“保存”按钮时一起上传它们以及其他数据。我正在尝试在发送之前计算POST数据的大小,以便我可以将请求分解为多个,以避免遇到PHP的post_max_sizemax_file_uploads错误。

目前,我正在使用此代码仅使用HTML5文件API(size属性)检查 images 的整体大小:

// Calculate size of all files being submitted
var ttlSize = 0;
$('form').find('input[type=file]').each(function() {
    ttlSize += this.files[0].size;
});

if (ttlSize > 4 * 1048576) { // >4MB
    // this will exceed post_max_size PHP setting, now handle...
} else if ($('form').find('input[type=file]').length >= 10) {
    // this will exceed max_file_uploads PHP setting, now handle...
}

我希望通过包含其余的POST数据来更精确。这可能吗?

2 个答案:

答案 0 :(得分:1)

您可以通过计算序列化表单的长度来估算它,不包括文件上载字段。所以它会在这些方面:

$("form").not("[type='file']").serialize().length;

答案 1 :(得分:0)

出于安全考虑,对文件上载元素的访问仅限于文件名。访问客户端计算机上文件的唯一方法是使用html5通过新的FormData对象。看看这里:FormData - Document Object Model。如果没有此对象,则无法获得文件的大小。否则:为什么不实现异步上传?