我有一个网络应用程序,允许用户添加多个图像,然后在按下“保存”按钮时一起上传它们以及其他数据。我正在尝试在发送之前计算POST数据的总大小,以便我可以将请求分解为多个,以避免遇到PHP的post_max_size
或max_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数据来更精确。这可能吗?
答案 0 :(得分:1)
您可以通过计算序列化表单的长度来估算它,不包括文件上载字段。所以它会在这些方面:
$("form").not("[type='file']").serialize().length
;
答案 1 :(得分:0)
出于安全考虑,对文件上载元素的访问仅限于文件名。访问客户端计算机上文件的唯一方法是使用html5通过新的FormData对象。看看这里:FormData - Document Object Model。如果没有此对象,则无法获得文件的大小。否则:为什么不实现异步上传?