Php 两个循环和移动上传的文件,我有点困惑
有两页。第1页包含: 第1页:Php 两个循环和移动上传的文件,我有点困惑,php,arrays,loops,session,foreach,Php,Arrays,Loops,Session,Foreach,有两页。第1页包含: 第1页: $_SESSION['temporary'][$i] = $_FILES['img']['tmp_name'][$i]; $_SESSION['image'][$i] = $_FILES['img']['name'][$i]; 第2页包含: 第2页: for($i=0;$i<count($_SESSION['temporary']);$i++) { echo '<br/>'.$_SESSION['temporary'][$i]; }
$_SESSION['temporary'][$i] = $_FILES['img']['tmp_name'][$i];
$_SESSION['image'][$i] = $_FILES['img']['name'][$i];
第2页包含:
第2页:
for($i=0;$i<count($_SESSION['temporary']);$i++)
{
echo '<br/>'.$_SESSION['temporary'][$i];
}
for($i=0;$i<count($_SESSION['image']);$i++)
{
$path = $pre_path.'/'.basename($_SESSION['image'][$i]);
echo '<br/>'.$_SESSION['image'][$i];
}
我不能在第二个循环中使用此函数。因为它不会包含
$\会话['temporary'][$i]
从第一个循环开始
我为什么要这样写剧本?
因为我的脚本按以下步骤工作:
foreach($_SESSION['temporary'] as $temporary)
{
echo '<br/>'.$temporary;
}
foreach($_SESSION['image'] as $image)
{
$path = $pre_path.'/'.basename($image);
echo '<br/>'.$image;
}
foreach($\u会话['temporary']作为$temporary)
{
回显“
”。$temporary;
}
foreach($\u会话['image']作为$image)
{
$path=$pre_path.'/'.basename($image);
回显“
”。$image;
}
在第2页上,您可以上传如下文件:
move_uploaded_file($_SESSION['temporary'][$i], $path);
$num_of_files = count($_SESSION['temporary']); // or count($_SESSION['image'])
for($i=0; $i < $num_of_files; $i++){
echo '<br/>'.$_SESSION['temporary'][$i];
echo '<br/>'.$_SESSION['image'][$i];
$path = $pre_path.'/'.basename($_SESSION['image'][$i]);
move_uploaded_file($_SESSION['temporary'][$i], $path);
}
$num_of_files=count($_SESSION['temporary']);//或计数($\u会话['image'])
对于($i=0;$i<$num\u文件;$i++){
回显“
”。$\u会话['temporary'][$i];
回显“
”。$\u会话['image'][$i];
$path=$pre_path.'/'.basename($_会话['image'][$i]);
移动上传的文件($\会话['temporary'][$i],$path);
}
显然我错了,你不能上传那样的文件
从
move\u upload\u file()
函数检查以确保文件名指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上载机制上载的)。如果文件有效,它将被移动到目标指定的文件名
$\u FILES
数组仅保存有关此请求中上载的文件的信息。如果不将该文件保存在同一请求中的其他位置,PHP将在请求结束时删除该文件。您不能简单地将$\u文件['uploadfoto']['tmp\u name']
保存到会话中,并期望该文件稍后仍在那里,因为它不会在那里。很好,您已经找到了循环的问题,谢谢。但文件没有上传:(没有出现错误。但我做了类似的操作:“如果(移动上传的文件($\u会话['temporary'][$I],$path)){echo'上传';}其他{echo'上传失败';}”,现在显示“上传失败”@WojciechGlapa我已经更新了我的答案。请看解释。非常感谢!我已经接受了答案。将临时文件移动到另一个文件夹的功能是什么?也许你知道?@WojciechGlapamove\u uploaded\u file()
是上传文件的唯一可用功能,即将临时文件从预定目录移动到用户指定目录。