在使用jQuery提交之前,如何检查POST数据大小?
我有一个web应用程序,允许用户添加多个图像,然后在按下保存按钮时一次上载这些图像以及其他数据。我试图在发送POST数据之前计算其总大小,以便将请求分解为多个请求,以避免出现PHP的在使用jQuery提交之前,如何检查POST数据大小?,jquery,file-upload,postdata,Jquery,File Upload,Postdata,我有一个web应用程序,允许用户添加多个图像,然后在按下保存按钮时一次上载这些图像以及其他数据。我试图在发送POST数据之前计算其总大小,以便将请求分解为多个请求,以避免出现PHP的POST\u max\u size或max\u file\u上载错误 目前,我正在使用此代码使用HTML5文件API(sizeproperty)仅检查图像的总体大小: //计算所有提交文件的大小 var ttlSize=0; $('form').find('input[type=file]')。each(functi
POST\u max\u size
或max\u file\u上载错误
目前,我正在使用此代码使用HTML5文件API(size
property)仅检查图像的总体大小:
//计算所有提交文件的大小
var ttlSize=0;
$('form').find('input[type=file]')。each(function(){
ttlSize+=此.files[0]。大小;
});
如果(ttlSize>4*1048576){/>4MB
//这将超过post_max_size PHP设置,现在处理。。。
}else if($('form').find('input[type=file]')。长度>=10){
//这将超过最大文件上传PHP设置,现在处理。。。
}
我想更准确地说,包括其余的POST数据。这可能吗?您可以通过计算序列化表单的长度来估计它,不包括文件上载字段。因此,它将沿着以下路线:
$(“form”).not(“[type='file']”)。serialize().length
出于安全目的,对文件上载元素的访问仅限于文件名。在客户端机器上访问文件的唯一方法是通过新的FormData对象使用html5。请看这里:。如果没有这些对象,就无法获得文件的大小。否则:为什么不实现异步上传?我希望这个链接会有所帮助you@AnkurSaxena-这个问题有那么难理解吗?关于非php限制,例如suhosin或apache的限制呢LimitRequestBody@MarcB我之所以关注这些PHP错误,是因为如果用户一次上传太多图像,我会遇到这些错误。太棒了,这似乎正是我需要的。目前,我的客户端和服务器端的数字由于一些错误的数学运算而关闭,但会找出发生了什么并给出最终结果。看起来此方法给出的结果比实际的内容长度
短了一个字节数,该字节数随提交的字段数以及使用的浏览器数的增加而增加。但这正是我想要的,谢谢。我想这并不准确。通过添加文件大小和表单序列化,我认为您没有考虑发送到服务器的文件元数据(作为文件名)或多部分/表单数据格式。顺便说一句,这是一个很好的方法。我想知道一个确切的防弹解决方案。我目前使用FileReader API将文件加载到DOM中,然后在iframe
中构造并提交表单。所以我可以得到文件大小,它是异步的。(: