我有两个正在使用的 .php 页面。Index.php 有一个回传到 index.php 的文件上传表单。提交表单后,我可以在 index.php 上访问 $_FILES 没问题。
我的问题是我希望(在表单提交和页面加载之后)使用 .ajax (jQuery) 调用另一个 .php 文件,以便该文件可以打开并处理一些行并将结果返回给 ajax。ajax 然后显示结果并递归调用自身来处理下一批行。
基本上我想以块的形式处理(放入数据库等)csv并在块之间为用户显示它。我这样做是因为文件有 400,000+ 行,用户不想等待 10+ 分钟来处理它们。
我不想移动这个文件(保存它),因为我只需要处理它并把它扔掉,如果用户在处理文件时关闭页面,它不会被扔掉。我可以 cron 编写脚本,但我不想。
我真正想做的是通过 .ajax 传递(单个)$_FILES 或将其保存在 $_POST 或 $_SESSION 中以在第二页上使用。
我的事业有希望吗?
如果有帮助,继承 ajax 代码:
function processCSV(startIndex, length)
{
$.ajax({
url: "ajax-targets/process-csv.php",
dataType: "json",
type: "POST",
data: { startIndex: startIndex, length: length },
timeout: 60000, // 1000 = 1 sec
success: function(data) {
// JQuery to display the rows from the CSV
var newStart = startIndex+length;
if(newStart <= data['csvNumRows']) {
processCSV(newStart, length);
}
}
});
}
processCSV(1, 2);
});
PS我确实尝试过使用PHP将$_FILES或$_POST传递到新页面,但它对我不起作用:(SOS。
澄清一下:我的问题是我想访问由 ajax 调用的页面上的 $_FILE 。该文件上传到 index.php,表单为 action="#",因此它发布到 index.php。在发布 index.php 向 process-csv.php 发送 ajax 调用后,我需要在 process-csv.php 上可以访问该文件。我不想移动文件,因为我不想清理旧文件。