MPG und PDF file upload ? welche methoden
joM
- php
hallo,
Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).
kann mir jemand sagen welcher funktionen ich mich bedienen muß,
wenn ich pdf's oder mpg's uploaden will.
mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.
welche sind die anderen funktionen ??
danke
Moin!
Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).
kann mir jemand sagen welcher funktionen ich mich bedienen muß,
wenn ich pdf's oder mpg's uploaden will.mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.
Die Funktion heißt ja nicht move_uploaded_jpg, oder?
- Sven Rautenberg
Hello,
Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).
kann mir jemand sagen welcher funktionen ich mich bedienen muß,
wenn ich pdf's oder mpg's uploaden will.mach ich das auch mit move_uploaded_file oder muß ich andere funktionen benutzten.
Sollte Dein PHP schon neu genug sein, dann verwende auf jeden Fall die Funktion
mime_content_type() http://de3.php.net/mime_content_type
Und schau Dir mal an, was
getimagesize() http://de3.php.net/manual/en/function.getimagesize.php
(englische Manualversion!)
noch an Informationen liefert.
Dann bau Dir eine Definitionsdatei, in der Du festlegst,
Sonst kannst Du Dir leicht Scripte oder Executables einfangen, die Du bestimmt nicht haben willlst.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
damit es nicht missverstanden wird:
Zur Verschiebung der Datei aus dem Upload_temp_dir ins Speicherverzeichnis sind natürlich weiterhin move_uploaded_file() oder copy() zu verwenden, aber eben erst nach der von mir angesprochenen Kontrolle der Dateien.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Meine Datei sieht momentan so aus:
Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>fileupload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<?
$uploadPath="";
$mimiMPG="video/mpeg";
$mimiPDF="application/pdf ";
$mpg1File=$_FILES['mpg1']['name'];
if($mpg1File!="")
{
$type=mime_content_type($_FILES['mpg1']['tmp_name']);
if($type==$mimiMPG)
{
if(move_uploaded_file)
{
print "upok";
}
}
}
else{print "doc leer";}
?>
<form name="form1" method="post" action="?" enctype="multipart/form-data">
<input type="file" name="mpg1">
<input type="submit" value="up" name="submit">
</form>
</body>
</html>
Moin!
Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???
if(move_uploaded_file)
Hier muß mehr stehen. Quelldatei, Zieldatei,... halt alles, was zum Bewegen einer Datei notwendig ist.
- Sven Rautenberg
hallo,
ich hatte das schon geändert, erhalte aber trotzdem eine fehlermeldung:
if(move_uploaded_file($_FILES['mpg1']['tmp_name'],$path))
{
print "upok";
}
else(print "ERROR";)
kann der uploadpfad relativ sein??? oder was mache ich noch falsch??
hi,
ich hatte das schon geändert, erhalte aber trotzdem eine fehlermeldung:
if(move_uploaded_file($_FILES['mpg1']['tmp_name'],$path))
[...]
kann der uploadpfad relativ sein???
ich denke, du hast mit der gleichen methode schon einen dateiupload für jpegs realisiert?
dann dürfte sich doch diese frage jetzt eigentlich gar nicht mehr stellen!
gruß,
wahsaga
hi,
das problem hat sich erledigt.
danke
Hello,
das problem hat sich erledigt.
Und erzählst Du uns bitte auch, durch welche Maßnahme? Das gehört hier irgendwie dazu ;-)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Also das problem lag bei move_uploaded_file()
Ich hatte dort beim ersten argument den bildnamen angegeben $_FILES['mpg1']['name'],
anstatt die temporäre datei $_FILES['mpg1']['tmp_name']
so sieht mein fertiger MPG uploader nun aus:
es folgt natürlich noch das eintragen in eine MYSQL datenbank
================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>fileupload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<?
$uploadPathMPG="mpg/";
$mimeMPG="video/mpeg";
$mpg1File=$_FILES['mpg1']['name'];
//-------------------------------------------------------------->MPG upload
if($mpg1File!="")
{
$type=mime_content_type($_FILES['mpg1']['tmp_name']);
$time=microtime();
$time=strrev($time);
$time=substr($time,0,9);
$rand=rand(0,1000);
$mpg1File=$rand."_".$time.".mpg";
if($type==$mimeMPG)
{
if(move_uploaded_file($_FILES['mpg1']['tmp_name'] , $uploadPathMPG.$mpg1File))
{
print "MPG succeful uploaded<br>";
print $mpg1File;
$mpgSizeKB=(int) (filesize($uploadPathMPG.$mpg1File)/1024);
}
else{print "UPLOAD ERROR !!!";}
}
else{print "This is not a valid MPG File";}
}
else{print "choose a doc";}
//=============================================
Hello,
if($mpg1File!="")
it is still wrong.
You must not use $_FILES[$inputfieldname]['name'] to check the upload success but youu should use $_FILES[$inputfieldname]['error']. PHP itself takes care of a proper upload.
Perhaps you don't understand german, so i'll try to talk english to you...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
$_FILES['mpg1']['tmp_name'] enthält den absoluten Pfad auf die temporäre Datei
$path ist relativ zum Ort des Scriptes
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Meine Datei sieht momentan so aus:
Was stimmt noch nicht an meinem script, WIE bekomme ich nun mein MPG file in einen bestimmeten ordner geladen???
Du hast, so scheint es, meine Verweise nicht durchgearbeiet.
$uploadPath="";
Der upload-Path wird in der php.ini oder in den VirtHosts eingestellt.
Genaueres dazu siehe http://de3.php.net/manual/en/function.ini-set.php
Er ist also i.d.R. vom Provider vorgegeben. Es handelt sich dabei um das Temporärverzeichnis.
Man muss ihn nicht wissen, da in $_FILES[$inputfeldname]['tmp_name'][0] *1)
Lies Dir bitte auch http://de2.php.net/features.file-upload durch.
$mimiMPG="video/mpeg";
$mimiPDF="application/pdf "; <--+
+-- Das Leerzeichen würde stören
Hier wäre ein Array angebracht
$_allowedMIME[] = 'video/mpeg';
$_allowedMIME[] = 'application/pdf';
$mpg1File=$_FILES['mpg1']['name'];
Das Name der Datei kann vom Client beliebig gesetzt werden.
Man sollte ihn immer auf seinen basename()-Anteil reduzieren
http://de2.php.net/manual/en/function.basename.php
if($mpg1File!="")
Ob das Feld leer ist, ist unerheblich. Das wäre auch möglich, wenn eine Datei hochgeladen wurde. Dann müsste eben beim Verschieben auf dem Server ein Name ausgewürfelt werden. Empfehlenswert ist da
$savename = "$user.".date('YmdHis').".$ext";
Wobei $user aus der Anmeldung des Users ermittelt wird und $ext mittels der mime_content_type() und /oder getimagesize() Funktion un einem eigenen Übersetzungs-Array.
{
$type=mime_content_type($_FILES['mpg1']['tmp_name']);if($type==$mimiMPG)
If (in_array($type,$_allowedMIME))
{
if(move_uploaded_file)
{
$saveok = move_uploaded_file($_FILES[$feldname]['tmp_name'],$pictureSavePath.'/'.$savename);
print "upok";
echo "<p class="message">".(($saveok)?'Upload erfolgreich abgeschlossen':'Leider trat ein Fehler auf')."</p>\n";
}
}
}
else{print "doc leer";}
?>
<form name="form1" method="post" action="?" enctype="multipart/form-data">
<input type="file" name="mpg1">
<input type="submit" value="up" name="submit">
</form>
</body>
</html>
Du hast leider das Feld $_FILES[$feldname]['error'][0] *1) nicht berücksichtigt.
Das solltest Du als erstes tun, dann die Größe der Datei anschauen, ob sie größer 0 ist, denn was wollst Du leere Dateien bewwegen?
Und dann schaust Du dir den Mime-Type an und prüfst, ob du ihn annehmen willst und wohin die Datei gehört ($pictureSavePath setzen) und dann schaust Du Dir den namen der Datei an und baust daraus den $savename.
Erst _dann_ führst Du die Verschiebung durch.
*1) Der index wird nur bei Multiuploads angelegt
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Ich habe schon fileuploads mit jpg's gemacht (move_uploaded_file).
kann mir jemand sagen welcher funktionen ich mich bedienen muß,
wenn ich pdf's oder mpg's uploaden will.
hinweise zum "moven" und prüfen hast du ja bereits bekommen.
ein weiterer hinweis von mir:
JPEGs sind in der regel ziemlich klein, aber bei PDFs und gar MPEGs kann das natürlich schon sehr leicht andere größenordnungen erreichen - da musst du also aufpassen, dass du nicht mit den am server/für PHP eingestellten limits für die upload-größe kollidierst ...
gruß,
wahsaga
Hello,
ein weiterer hinweis von mir:
JPEGs sind in der regel ziemlich klein, aber bei PDFs und gar MPEGs kann das natürlich schon sehr leicht andere größenordnungen erreichen - da musst du also aufpassen, dass du nicht mit den am server/für PHP eingestellten limits für die upload-größe kollidierst ...
und noch einer von mir:
Auch die max_input_time ist wichtig, anders als meistens vermutet. Die max_execution_time des Scriptes fängt nämlich erst nach erfolgreichem Input an zu laufen. Die max_input_time ist dann also dafür verantwortlich, wenn bei einer langsamen Übertragungsstrecke das File nicht vollständig hochgeladen werden kann.
Bald können wir einen neuen Featureartikel aus dem Thread machen.
Außerdem gibt es dazu schon eine etwas längere Antwort von mir auf einen älteren Thread, die mit den anderen noch zur Verfügung stehenden Prüfmöglichkeiten mittels $_FILES beschäftigt.
habe ihn gefunden:
http://forum.de.selfhtml.org/archiv/2004/9/90629/#m543754
Harzliche Grüße aus http://www.annerschbarrich.de
Tom