3

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

目前,我使用此代码仅使用 HTML5 File API(属性)检查图像的整体大小:size

// 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 数据来更精确。这可能吗?

4

2 回答 2

1

您可以通过计算序列化表单的长度来估算它,不包括文件上传字段。所以它会是沿着这些路线的某个地方:

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

于 2012-11-16T16:37:32.770 回答
0

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

于 2012-11-16T17:40:28.437 回答