file type php
Beste php'ers,
ik ben een film database aan het maken voor intern gebruik, maar nu kom ik tegen het volgende probleem aan.
Als ik een mp4 filmpje wil uploaden accepteert hij het niet, enkel als ik een jpg plaatje doet, accepteert hij het wel. hier de code:
form
upload_file.php
ik ben een film database aan het maken voor intern gebruik, maar nu kom ik tegen het volgende probleem aan.
Als ik een mp4 filmpje wil uploaden accepteert hij het niet, enkel als ik een jpg plaatje doet, accepteert hij het wel. hier de code:
form
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<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>
<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>
upload_file.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "movie/mp4"))
&& ($_FILES["file"]["size"] < 200000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "movie/mp4"))
&& ($_FILES["file"]["size"] < 200000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
en wat is de error die je krijgt?
Error: 1
Invalid file
Invalid file
Hoeveel mag je maximaal uploaden volgens php.ini? Standaard is dit namelijk 10 MB.
Nouja, ik heb dat verandert, heb er gewoon wat nulletjes achter gezet. Maar ookal gebruik ik een ander bestand. (bijv. .docx) dan kan ik hem ook niet uploaden
docx mag niet volgens jou script dus dat zou op zich nog kunnen of heb je dat aangepast?
Ik heb het inderdaad aangepast. Ik had toestraks een file erbij gezet:
|| ($_FILES["file"]["type"] == "document/docx"))
Maar ook dat deed hij niet
|| ($_FILES["file"]["type"] == "document/docx"))
Maar ook dat deed hij niet
Ik denk dat het met mime types te maken heeft die je browser mee stuurt.
Haal het hele stuk waarmee je op file type controleert eens weg en kijk dan eens wat er gebeurd
Haal het hele stuk waarmee je op file type controleert eens weg en kijk dan eens wat er gebeurd
Ik heb heel het stukje weggehaald, maar nu krijg ik deze melding:
Parse error: syntax error, unexpected T_ELSE in C:\test\upload_file.php on line 37
Parse error: syntax error, unexpected T_ELSE in C:\test\upload_file.php on line 37
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
else
{
echo "Invalid file";
}
?>
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
else
{
echo "Invalid file";
}
?>
opzich wel logisch toch, als je die if weg haald van het checken van de file en de else niet weg haald.
Ik bedoelde zo
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if (($_FILES["file"]["size"] < 200000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
if (($_FILES["file"]["size"] < 200000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 10240000000000) . " Kb<br />";
echo "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"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
Klopt, mijn fout!
Maar als ik nu een mp4 opload, krijg ik dit:
Error: 1
Return Code: 1
Toevoeging op 19/04/2012 12:52:19:
Q S, ook dan krijg ik dezelfde foutmelding:
Error: 1
Return Code: 1
Maar als ik nu een mp4 opload, krijg ik dit:
Error: 1
Return Code: 1
Toevoeging op 19/04/2012 12:52:19:
Q S, ook dan krijg ik dezelfde foutmelding:
Error: 1
Return Code: 1
Hoe staat je POST_MAX ingesteld in je php.ini?
post_max_size = 8M
En hoe groot is je MP4?;) Zie ook: http://php.net/manual/en/features.file-upload.errors.php
Gewijzigd op 19/04/2012 13:37:57 door Jurgen B
Oke, ik heb de php.ini aangepast, maar ik krijg nog steeds dezelfde meldingen.. Als ik btw een .mov doe, dan lukt het wel. Doe ik een .mov van 350mb dan krijg ik allemaal rare meldingen.. Ik ben radeloos! Wie helpt mij uit de sloot?
Even voor de duidelijkheid, vertrouw uploads nooit op basis van een MIME-type. Deze zijn namelijk browser afhankelijk en kunnen worden veranderd door de gebruiker. Dat wilt zeggen dat ik een PHP bestand kan uploaden terwijl jouw pagina denkt dat het een jpg is. Gevaar is dus dat ik het PHP bestand kan oproepen en jouw gehele website om zeep kan helpen.
Baseer het dus o.a. op basis van extensies.
Baseer het dus o.a. op basis van extensies.
@Chris, goede tip!
@Jerry, welke meldingen krijg je nu dan? Ik kan me voorstellen dat het uploaden van het bestand teveel tijd gaat kosten dus ik vermoed dat de meldingen daar mee te maken hebben.
@Jerry, welke meldingen krijg je nu dan? Ik kan me voorstellen dat het uploaden van het bestand teveel tijd gaat kosten dus ik vermoed dat de meldingen daar mee te maken hebben.
@chris Inderdaad goede tip, maar het gaat nu niet echt om het feit dat het veilig is. Het is namelijk een bedrijfs website (intern) en daar komt niemand van buitenaf op. Maar het gaat er mij eigenlijk nu meer om, dat ik mijn mp4 bestanden kan uploaden.
@Jurgen, nog precies dezelfde melding als ik die mp4 upload.
@Jurgen, nog precies dezelfde melding als ik die mp4 upload.
Gewijzigd op 19/04/2012 14:30:21 door Jerry php
Heb je de server opnieuw gestart na het aanpassen van de .ini?
Ja, dat heb ik inmiddels ook al gedaan.
Maar nog steeds deze melding wanneer ik een mp4 wil uploaden.
Error: 1
Return Code: 1
Maar nog steeds deze melding wanneer ik een mp4 wil uploaden.
Error: 1
Return Code: 1
Gewijzigd op 19/04/2012 14:31:29 door Jerry php




