2014-01-26 88 views
0

正如标题所说,我希望在用户上传文件后将用户重定向回主页面,到目前为止,所有代码都会显示包含相关信息的页面(文件名,文件大小等)我想将它们重定向到自定义成功页面。如何在使用PHP上传文件后重定向用户

HTML:

<html> 
<body> 

<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

PHP:

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
{ 
"Upload: " . $_FILES["file"]["name"] . "<br>"; 
"Type: " . $_FILES["file"]["type"] . "<br>"; 
"Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
"Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
else 
    { 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $_FILES["file"]["name"]); 
    header('Location: success.html'); 
    } 
    } 
} 
else 
{ 
    echo "Invalid file"; 
} 
?> 

回答

1

假设你的成功页 'success.html',你可以使用:

header('Location: success.html'); 

您需要将所有删除你的回声线,因为它会导致你'头已经发送'异常。

从工作流持续性来看,回显屏幕和重定向也没有意义。

删除以下行:

echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

您也可以存储在阵列中的所有文件类型,使你的代码更清洁:

$allowedTypes = array("image/gif",..,..,"image/png"); 

然后用

in_array($_FILES["file"]["type"], $allowedTypes); 

全部代码:

<? 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$allowedTypes = array("image/gif",'..','..',"image/png"); 

$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((in_array($_FILES["file"]["type"], $allowedTypes)) 
    && ($_FILES["file"]["size"] < 20000) 
    && in_array($extension, $allowedExts)) 
{ 
if ($_FILES["file"]["error"] > 0) 
{ 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
{ 

if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
    else 
    { 
    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); 
    header('Location: success.html'); 
    } 
    } 
} 
else 
{ 
echo "Invalid file"; 
} 
?> 

希望这有助于!

+0

修改我的答案 – Yani

+0

我现在得到这个错误;警告:无法修改头文件信息 -/srv/disk12/1369030/www/dayz-文件中已经发送的头文件(输出在/srv/disk12/1369030/www/dayz-survivorguide.co.nf/upload_file.php:20开始) 33线上的survivorguide.co.nf/upload_file.php – Cwtch22

+0

您必须更换回波线。任何输出到屏幕后,您都无法设置标题。 – Yani