共有两页。第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];
}
for($i=0;$i<count($_SESSION['image']);$i++)
{
$path = $pre_path.'/'.basename($_SESSION['image'][$i]);
echo '<br/>'.$_SESSION['image'][$i];
}
我想做的是使用move_uploaded_file这样的函数:
move_uploaded_file($_SESSION['temporary'][$i], $path);
我不能在第二个循环中使用这个函数。因为它不包含
$_SESSION['temporary'][$i]
从第一个循环。
我为什么要这样写剧本?因为我的脚本在以下步骤中工作:
- 第0页:选择类别和属性,并上传图像
- 第1页:显示所选类别和base64编码的图像
- 第2页:将所有内容插入数据库
我真的不介意这么做。如果有人帮我,我会很高兴的。当然,我接受了答案,并竖起大拇指。如果你觉得它更容易,你可以使用foreach循环代替:
foreach($_SESSION['temporary'] as $temporary)
{
echo '<br/>'.$temporary;
}
foreach($_SESSION['image'] as $image)
{
$path = $pre_path.'/'.basename($image);
echo '<br/>'.$image;
}
在page2本身上,您可以上传如下文件:
$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);
}
显然我错了,你不能上传那样的文件。
根据手册,
move_uploaded_file()
函数检查以确保filename指定的文件是有效的上传文件(意味着它是通过PHP的HTTPPOST上传机制上传的)。如果文件有效,它将被移动到目标指定的文件名。
$_FILES
数组仅保存有关此请求中已上载的文件的信息。如果您没有将该文件保存在同一请求中的其他位置,PHP将在请求结束时删除该文件。您不能简单地将$_FILES['uploadfoto']['tmp_name']
保存到会话中,然后期望文件稍后仍在那里,因为它不会是。