Ik ben op zoek, na een video, avi upload script.
Omdat ik graag eigen gemaakte avi bestanden naar mijn website kan uplouden.
Wie weet er toevallig een, of wil mij er bij helpen er een in elkaar te zeten.
<?
error_reporting(E_ALL);
ini_set('display_errors',1);
//kijken of er een bestand is geselecteerd
if(isset($_FILES['bestand'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['bestand']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['bestand']['type'] == "application/x-troff-msvideo" ||
$_FILES['bestand']['type'] == "video/avi" ||
$_FILES['bestand']['type'] == "video/msvideo" ||
$_FILES['bestand']['type'] == "video/x-msvideo" ||
$_FILES['bestand']['type'] == "image/gif" ||
$_FILES['bestand']['type'] == "image/png" ||
$_FILES['bestand']['type'] == "image/pjpeg" ||
$_FILES['bestand']['type'] == "image/jpeg")
{
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['naam'])) {
$naam = $_FILES['bestand']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['bestand']['name'], ".");
$naam = $_POST['naam'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['bestand']['tmp_name'], "../video/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
chmod("../video/" . $naam, 0777);
} else {
echo "Het bestand is geen png, jpg, gif of avi";
}
}
} else {
echo "Selecteer een bestand";
}
?>
<form action="" method="post" enctype="multipart/form-data">
<b>Bestand:</b> <input type="file" name="bestand"><br>
<b>Nieuwe naam:</b> <input type="text" name="naam"><br>
<input type="submit" name="submit" value="Upload">
</form>
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['bestand']['size'] > 102400)
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['bestand']['size']>102400)
Filmpjes van 100kb lijken mij juist geteld 1 seconden te duren... ALS dat al mogelijk is...
Zeker dat daar je probleem niet ligt?
Anders moet je ook eens nagaan op welke max_file_size je hebt in je config van Apache... Die kan ook tegenwerken als je bestand groter is dan wat daar ingesteld staat...
Mijn max file size staat op 20m ingesteld.
Het bestand dat ik wilde uploaden is 18m.
De instelling heb ik inmiddels veranderd na 1024000000.
Maar het werkt nog steeds niet.
Ook een if functie er in, maar geeft niets aan bij een avi maar wel bij een foto.
Ook krijg ik geen fout melding van de error reporting te zien.
<?
error_reporting(E_ALL);
ini_set('display_errors',1);
//kijken of er een bestand is geselecteerd
if(isset($_FILES['bestand'])) {
//als het bestand groter is dan 20480000000 bytes(100kb) word hij niet toegelaten
if($_FILES['bestand']['size'] > 20480000000) {
echo "Het bestand is <b>" . $_FILES['bestand']['size'] . "</b>, het maximale toegstaan is <b>20480000000</b>";
} else {
//kijken of het bestand wel een gif, png, jpg of avi is
if($_FILES['bestand']['type'] == "application/x-troff-msvideo" ||
$_FILES['bestand']['type'] == "video/avi" ||
$_FILES['bestand']['type'] == "video/msvideo" ||
$_FILES['bestand']['type'] == "video/x-msvideo" ||
$_FILES['bestand']['type'] == "image/gif" ||
$_FILES['bestand']['type'] == "image/png" ||
$_FILES['bestand']['type'] == "image/pjpeg" ||
$_FILES['bestand']['type'] == "image/jpeg")
{
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['naam'])) {
$naam = $_FILES['bestand']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['bestand']['name'], ".");
$naam = $_POST['naam'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['bestand']['tmp_name'], "../video/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
chmod("../video/" . $naam, 0777);
if (move_uploaded_file($_FILES['bestand']['tmp_name'], "../video/" . $naam) == true)
{
echo "ERROR: Het bestand is NIET verplaatst";
} else {
echo "Het bestand is verplaatst na ../video/" . $naam;
}
} else {
echo "Het bestand is geen png, jpg, gif of avi";
}
}
} else {
echo "Selecteer een bestand";
}
?>
<form action="index.php?pagina=video_nieuw" method="post" enctype="multipart/form-data">
<b>Bestand:</b> <input type="file" name="bestand"><br>
<b>Nieuwe naam:</b> <input type="text" name="naam"><br>
<input type="submit" name="submit" value="Upload">
</form>
Bij het uploaden van (grote) bestanden moet je rekening houden met de volgende zaken:
- (php instelling) upload_max_filesize: de maximale grootte van één geupload bestand
- (php instelling) post_max_size: de maximale grootte van ALLE POST-data (dus zowel tekstvelden, textareas én ook bestanden)
- (php instelling) memory_limit: de maximale hoeveelheid geheugen die een script zich mag toe-eigenen
- als het uploaden of vervolgens afhandelen van de upload (in geval van afbeeldingen: rescaling / thunbnailing etc.) erg lang duurt dan kan er een timeout in het script optreden, je zou dan kunnen denken aan het aanpassen van de tijdslimiet (set_time_limit) maar dit is de tijd die het script echt zelf bezig is, het uploaden van het bestand wordt volgens mij niet tot deze tijd gerekend, tenzij je op een windows-platform werk; anyway, dit laatste hoef je niet aan te passen totdat je echt tegen timeouts begint aan te lopen
Je zou in je verwerk-stap van je formulier ook eens $_POST en $_FILES kunnen dumpen naar je scherm, dit biedt vaak goede inzage in wat er werkelijk gebeurt.
De eerste drie PHP-instellingen zijn meestal de boosdoeners, deze moeten enigszins in harmonie zijn met wat je probeert te uploaden.
Hoe groot zijn de bestanden die je probeert te uploaden? Als deze nabij of groter dan 16 MB zijn gaat het sowieso niet werken; dat is de limiet die je host je heeft opgelegd. Tenzij jij deze kunt overschrijven.
Daarnaast zie ik dat Suhosin wordt gebruikt. Dit kan een mogelijke oorzaak zijn. Je zou je host kunnen vragen om deze tijdelijk in simulation mode te laten draaien, om zo in ieder geval te bepalen of Suhosin roet in het eten gooit:
Citaat:
If you fear that Suhosin breaks your application, you can activate Suhosin’s simulation mode with this flag. When Suhosin runs in simulation mode, violations are logged as usual, but nothing is blocked or removed from the request. (Transparent Encryptions are NOT deactivated in simulation mode.)
Daarnaast: bekijk je error logs, als Suhosin moeilijk doet over je file-uploads, dan zou je dat hier terug moeten vinden...
Als dit allemaal te technisch is / je dit niet zelf kunt oplossen (omdat je simpelweg niet bij deze informatie kunt komen) stel ik voor dat je contact opneemt met je host (provider). Maak daar je wensen kenbaar (wat wil je doen), en geef aan wat er mis gaat. Je zou daarbij kunnen aangeven dat Suhosin je mogelijk parten speelt als potentiele oplos-richting en bovenstaande voorstel doen, bij wijze van test.