Zadałem więc wcześniejsze pytanie tutaj: Przekazać plik
Próbowałem rozwiązań, ale teraz, bez względu na to, czy jest to prawidłowy typ pliku, czy nie, po prostu mówi „nieprawidłowy plik”. Oto mój HTML:
<form action="upload_file.php" method="post" enctype="multipart/form-data" target="my_iframe">
Select a file: <input type="file" name="upload">
<input type="submit">
</form>
A oto mój upload_file.php:
$allowedExts = array("doc", "docx");
$extension = end(explode(".", $_FILES["file"]["upload"]));
if (($_FILES["file"]["size"] < 200000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["upload"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("Proposals/" . $_FILES["file"]["upload"]))
{
echo $_FILES["file"]["upload"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"Proposals/" . $_FILES["file"]["upload"]);
echo "Stored in: " . "Proposals/" . $_FILES["file"]["upload"];
}
}
} else {
echo "Invalid file";
}
Próbowałem również:
$extension = pathinfo( $_FILES["file"]["upload"], PATHINFO_EXTENSION);
I zrobił
die($extension);
Na obu, ale nic zostaje wydrukowane. Mam więc dwa pytania
1) Co jest nie tak z moim powyższym kodem
2) Jak ukryć ramkę iframe, dopóki nie otrzymam odpowiedzi? a następnie mieć jak dobry przycisk, aby zniknął, gdy użytkownik przeczyta odpowiedź? Oto kod iframe, jeśli pomaga:
<iframe name="my_iframe" src="upload_file.php"></iframe>
Odpowiedzi:
2 dla odpowiedzi № 1Zmiana
$_FILES["file"]["upload"]
Do
$_FILES["upload"]["name"]
Wszędzie i tak samo z innymi odniesieniami. Więc;
$_FILES["file"]["size"] **To** $_FILES["upload"]["size"]
I
$_FILES["file"]["type"] **To** $_FILES["upload"]["type"]
I
$_FILES["file"]["tmp_name"] **To** $_FILES["upload"]["tmp_name"]
1 dla odpowiedzi nr 2
Ty masz:
if (($_FILES["file"]["size"] < 200000) && in_array($extension, $allowedExts)) {
Powinien to być $ _FILES [„upload”] [„size”], ponieważ masz
<input type="file" name="upload">
1 dla odpowiedzi nr 3
Sprawdź ten samouczek: http://www.w3schools.com/php/php_file_upload.asp
Powinien to być $ _FILES [„upload”] Popełniłeś błąd
1 dla odpowiedzi nr 4
Zmiana
$_FILES["file"]["size"]
do
$_FILES["upload"]["size"]
i zrobić to samo dla wszystkich innych zmiennych, atrybut nazwy pliku wejściowego to Przekazać plik, nie plik, zgodnie z Twoim HTML:
<input type="file" name="upload">
HERE ----^