2014-01-26 59 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