使用javascript的表单大小(以字节为单位)?

使用javascript的表单大小(以字节为单位)?,javascript,Javascript,是否可以使用JavaScript确定表单发送的POST数据的大小(以字节为单位)? 这个想法是在提交表单之前验证表单大小,以避免与post_max_size有关的php错误。正如@j08691所说,最好检查服务器端以避免修改 但是,您可以通过获取要发送给client=>server的每个数据的对象/变量类型并求和来计算所有字节 这很长,不是一个好的练习,但你可以做到 const typeSizes = { 'undefined': () => 0, 'boolean': (

是否可以使用JavaScript确定表单发送的POST数据的大小(以字节为单位)?
这个想法是在提交表单之前验证表单大小,以避免与post_max_size有关的php错误。

正如@j08691所说,最好检查服务器端以避免修改

但是,您可以通过获取要发送给client=>server的每个数据的对象/变量类型并求和来计算所有字节

这很长,不是一个好的练习,但你可以做到

const typeSizes = {
    'undefined': () => 0,
    'boolean': () => 4,
    'number': () => 8,
    'string': (item) => 2 * item.length,
    'object': (item) => Object.keys(item).reduce(
        (sum, key) => sum + sizeOf(key) + sizeOf(item[key]), 0
    ) };

const sizeOf = (value) => value === null ? 0 : typeSizes[typeof value](value);
这段代码提供了一个名为sizeOf的函数,它提供了不同类型数据的大小

知道您可以将总数与post_max_size值进行比较,并在请求之前抛出错误


拜拜:

你对自己想要实现的目标有什么样的了解吗?你不应该只依赖客户端检查和客户端发送给你的任何东西。您应该始终在服务器端进行检查。@j08691是否可以检查超过post_max_size的post的大小?我猜op想让用户知道上传大小是否超过了服务器限制,这在服务器端似乎是不可能的。当然,服务器端验证是必需的,但是客户端验证增加了一个传统的验证级别并提高了可用性