Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi Leute!

Ich hab mir gedacht ich prog mal einen FileUpload zum Üben aber ich bekomm dabei ziemlich viele fehler könnte mir da jemand helfen?

<?php
require_once('connect.inc.php');


$target = "D/OnlinePics";
$max_size = 1500;
$uploadfile=$_FILES['upload']['tmp_name'];
$uploadname=$_FILES['upload']['name'];
$uploadtype=$_FILES['upload']['type'];
$uploaddesc=$_POST['desc'];


$tempfile=fopen($uploadfile, 'rb');
$filedata=fread($tempfile, filesize($uploadfile));
$filedata=addslashes($filedata);


switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}

if($_FILES['upload']['type']>$maxsize){
exit('Die Hochgeladene Datei ist zu groß!\n Es duerfen nur Dateien bis 1,5MB hochgeladen werden!');
}

$uploadname= $target . time() . $_SERVER['REMOTE_ADDR'] . $_FILES['upload']['type'];

$sql="insert into filestore set
FileName='$uploadname',
MimeType='$uploadtype',
Description='$uploaddesc',
FileData='$filedata'";

if(!@mysql_query($sql)) {
exit('Datenbankfehler beim Einfügen der Datei:' . mysql_error());
}


if(is_uploaded_file($uploadfile)) {
echo '<p>Datei erfolgreich als $uploadname gespeichert!</p>';
}else{
exit"<p>Datei konnte nicht gespeichert werden!</p>";
}

?>[/PHP]

ok, klar das mit switch ist schon mal falsch da es immer ausgegeben wird egal ob bild oder nicht und selbst wenn es eine bilddatei ist ist es falsch weil ja dann immer gleich die meldung ausgegeben wird und der rest dafür unwichtig ist.

ansonsten finde ich irgendwie keinen fehler

plz help!

Geschrieben

naja fehler:

$maxsize){ exit('Die Hochgeladene Datei ist zu groß!\n Es duerfen nur Dateien bis 1,5MB hochgeladen werden!'); } $uploadname= $target . time() . $_SERVER['REMOTE_ADDR'] . $_FILES['upload']['type']; $sql="insert into filestore set FileName='$uploadname', MimeType='$uploadtype', Description='$uploaddesc', FileData='$filedata'"; if(!@mysql_query($sql)) { exit('Datenbankfehler beim Einfügen der Datei:' . mysql_error()); } if(is_uploaded_file($uploadfile)) { echo '


Datei erfolgreich als $uploadname gespeichert!

'; }else{ exit"


Datei konnte nicht gespeichert werden!

"; } ?>

aber wenn ich die daten so einfüge werden sie doch nicht in der datenbank gespeichert sondern nur die namen oder?

und noch was wie kann ich den speicherort auf setzen ?

ich glaube nicht das einfach $target reicht

Geschrieben

$filedata=fread($tempfile, filesize($uploadfile));

$sql="insert into filestore set

FileName='$uploadname',

MimeType='$uploadtype',

Description='$uploaddesc',

FileData='$filedata'";

Was machst Du denn dann bitte mit diesen Zeilen?

Außerdem ist das SQL Statement nicht korrekt.

Phil

Geschrieben

naja schaun wir mal das das programm funzt

und dann können wir darüber reden.

denn ich glaub nicht das es daran liegt

und was soll an meiner syntax falsch sein?

Geschrieben

naja sobald ich auf hochladen in der html-datei klicke bekomme ich die seite so angezeigt wie ich sie 4 posts ober dir beschrieben habe

und in der fehlerkonsole steht auch nichts auser html-mist

und was die sql befehle angehen ich glaube einfach nicht das die falsch sind

weil ich sie schon in kleineren sachen so geschrieben habe und sie gingen

aber wie gesagt ist ja auch egal ich möchte jetzt mla den eigentlichen code zum laufen bringen

Geschrieben
naja sobald ich auf hochladen in der html-datei klicke bekomme ich die seite so angezeigt wie ich sie 4 posts ober dir beschrieben habe

und in der fehlerkonsole steht auch nichts auser html-mist

PHP: error_reporting - Manual

Auf welchem Error Report steht Deine Konfiguration? Ich empfehle zur Entwicklung E_ALL

aber wie gesagt ist ja auch egal ich möchte jetzt mla den eigentlichen code zum laufen bringen

Deine Fehler sind so nicht nachvollziehbar, da niemand Deine Umgebung so zur Verfügung hat. Es sind semantischen Fehlern (switch bzw break ist falsch gesetzt, Variablen sind nicht konsequent benannt) enthalten. Schalte das Error Reporting wie oben beschrieben ein, korrigiere diese Fehler / Warnings, ich gehe davon aus, dass einige enthalten sein werden und poste dann den korrigierten Code, ggf erkennst Du damit auch Deine Fehler selbst

Generell möchte ich hier Dir keinen korrigierten fertigen Code posten, da damit der Lerneffekt nicht vorhanden wäre.

Phil

Geschrieben

folgendes ich hab noch nie mit error reporting gearbeitet

wenn ich error_reporting(E_ALL); hinzuschreibe bekomme ich die gleiche ausgabe auf der seite wie vorhin. muss ich etwa noch was in der php.ini setzen?

was die switch abfrage angeht ich weis normalerweise muss man nach jedem case eine break haben aber ich habe mir gedacht so spare ich mir ein paar zeilen

ich hab mir gedacht so fragt er ab ob der typ jpeg oder jpg oder png oder gif ist und dann gibt er die meldung aus das es geht und wenn das nicht der fall ist soll er aussteigen. was er aber nicht macht.

was die bennung der variablen angeht seh ich irgendwie keine probleme.

und nein, ich möchte auch keinnen fertig korrigierten code

Geschrieben

ok wenn ich die error reorting ganz am anfang hinzufüge kommt was interessantes:

wenn ich im html formular auf hochladen klicke möchte er mir die upload.php herunterladen was könnte denn da für ein fehler sein?

Geschrieben
folgendes ich hab noch nie mit error reporting gearbeitet

wenn ich error_reporting(E_ALL); hinzuschreibe bekomme ich die gleiche ausgabe auf der seite wie vorhin. muss ich etwa noch was in der php.ini setzen?

setze das ErrorReporting in Deiner php.ini und starte den Dienst neu.

Der unten genannte Fehler muss dann erscheinen

was die switch abfrage angeht ich weis normalerweise muss man nach jedem case eine break haben aber ich habe mir gedacht so spare ich mir ein paar zeilen

ich hab mir gedacht so fragt er ab ob der typ jpeg oder jpg oder png oder gif ist und dann gibt er die meldung aus das es geht und wenn das nicht der fall ist soll er aussteigen. was er aber nicht macht.

PHP: switch - Manual

Doch, Du musst exakter arbeite:

$max_size = 1500;
[/PHP]

bzw

[PHP]
if($_FILES['upload']['type']>$maxsize)

Verwende Konstanten und keine Variablen

Phil

Geschrieben

ja, aber in deinem switch links steht das:

#


<?php
switch ($i) {
case 0:
case 1:
case 2:
echo "i is less than 3 but not negative";
break;
case 3:
echo "i is 3";
}
?>
[/PHP]

und das ist bei mir doch ziemlich das gleiche wenn hier i 0,1 oder 2 ist dann kommt i is less than 3 .

und das gleihce ist bei mir doch auch

[PHP]switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}

wenn der typ gif jpeg jpg oder png ist wirds hochgeladen angezeigt wenn der typ ein anderer ist steigt es aus.

und was maxsize angeht hab ich schon gesehen

Geschrieben

$_FILES['upload']['type'];

gibt den mime-type der datei in einem array aus!

meinst du das?

aber was ist mit error_reporting(E_ALL);

warum möchter er wenn ichs dazu schreibe die datei herunterladen?

Geschrieben
$_FILES['upload']['type'];

Ich meine den Typ der Variablen, nicht den Inhalt

aber was ist mit error_reporting(E_ALL);

warum möchter er wenn ichs dazu schreibe die datei herunterladen?

Dann stimmt wohl nicht der MimeTyp Deines Webservers. Prüfe Deine Konfiguration

Phil

Geschrieben

Hallo,

das kleine Statement kann ich auf Grund der ganzen Fehler noch nicht mal ohne Fehler anzeigen lassen.


switch($uploadtype) {

case: image/gif
case: image/jpeg
case: image/jpg
case: image/png break;
echo ('File wurde erfolgreich hochgeladen!');

default: exit('Die Datei hat keinen unterstützten Datentyp!');
}
[/php]

Wenn ich großzügig rechne, dann sehe ich vier Fehler.

Frank

Geschrieben

also so ein spaziergang mit dem hund vollbringt wunder.

wieso sollte ich denn einen echo ausgeben wenn das skript noch weiter arbeiten muss?

ich muss einfach hinter jedem ein break schreiben - dann steigt er aus dem switch aus und macht weiter - es ist kein echo nötig!

und wenn es kein typ davon ist macht er ein exit

Geschrieben

wieso sollte ich denn einen echo ausgeben wenn das skript noch weiter arbeiten muss?

ich muss einfach hinter jedem ein break schreiben - dann steigt er aus dem switch aus und macht weiter - es ist kein echo nötig!

und wenn es kein typ davon ist macht er ein exit

Selbst dann bekommt man es nicht ohne Fehlermeldungen hin.

Frank

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...