【发布时间】:2016-11-27 20:19:41
【问题描述】:
我在一个处理大量数据的项目中有一个步骤表单。为了防止创建过程中出现错误,所有信息都存储在客户端,最后发送到服务器。
发送到服务器的信息如下所示:
{
name: "project1",
decription: "lot of text",
schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...]
tasks:["task1", "task2"... until 20/30],
files:[{file1}, {file2}, ...],
services:[{
name: "service1",
decription: "lot of text",
schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...]
tasks:["task1", "task2"... until 20/30],
files:[{file1}, {file2}, ...],
jobs:[{
name: "job1",
decription: "lot of text",
schedule:[{weekDay:1, startHour:"09:00", endHour:"15:00"}, ...]
tasks:["task1", "task2"... until 20/30],
files:[{file1}, {file2}, ...]
},{
name: "job2",
}
]
...
},{
name:"service2",
...
}
}
等等.. 这是一个非常简化的示例,在真实环境中,将有 1 个项目有大约 10-15 个服务,每个项目有 4-5 个工作。
我已经能够处理最后一级中大约 15 个项目的所有内容,现在我正在尝试预处理数据以在发送之前删除服务器中不需要的对象,并且我希望能够发送过来上一关的 50 个项目未触发“max_input_variables 超出 xxx”服务器端。但在某些情况下,仍然会非常接近极限。
我正在考虑改变我发送/接收数据的方式,但我不确定我的猜测是否正确。
之前有人建议使用 json 请求来防止输入变量错误,请求必须通过 multipart/form-data 来发送文件。
话说回来,我的猜测如下:
将所有数据作为 json 装入单个变量中,并将文件保存在单独的变量中(formData 看起来像
{project:{hugeJSON}, files:[file1, file2], services:[{files:[...]}, {files:[...]}] })-
在表单填写期间将部分数据发送到服务器并将其存储在某处(我最好的选择是 tmp 文件),在最后一步中,仅发送主要表单信息。
李> 可能是一个愚蠢的猜测,但有没有类似发送分块数据的东西?理想情况下,我想向用户显示一个加载栏,上面写着“正在创建项目--> 保存服务 nº1--> 为服务 1 生成文档...”我认为我可以实现这一点,使我的服务器端脚本生成一个分块响应,但不确定。
非常感谢任何可以向我展示正确方法的帮助。
提前为您服务。
【问题讨论】:
标签: javascript php transfer data-transfer