Gå til innhold

[Løst] Opplaste filer


Anbefalte innlegg

Videoannonse
Annonse

Et lite tips. Ikke bruk W3Schools. En veldig dårlig kilde. Se ref W3Fools.

 

Undefined index er en notis om at variablen er tom. Dette kan fjernes ved å bruke

 

isset()

 

Prøv deg frem. I verste fall kan du sette

 

 error_reporting(E_ERROR | E_PARSE);

 

i toppen av PHP-filen eller evt. konfiguere Apache. Du bør selvfølgelig løse problemet, ikke bruke workarounds.

 

Erstatt

 

$extension = end(explode(".", $_FILES["file"]["name"]));

 

med

 

$tmp = explode(".", $_FILES["file"]["name"]);
$extension = end($tmp); 

 

End krever en referanse. explode(".", $_FILES["file"]["name"]); kan ikke bli omgjort til en referanse. Det er derfor du må tilordne et resultat av explode(".", $_FILES["file"]["name"]); til en variabel.

Endret av winter2012
Lenke til kommentar

Et lite tips. Ikke bruk W3Schools. En veldig dårlig kilde. Se ref W3Fools.

 

Takk for tipset.

Undefined index er en notis om at variablen er tom. Dette kan fjernes ved å bruke

 

isset()

 

Prøv deg frem. I verste fall kan du sette

 

 error_reporting(E_ERROR | E_PARSE);

Det fungerte med isset men da dukket det opp en annen feil. Får opp denne istedet:

Parse error: syntax error, unexpected ')' in C:\Program Files (x86)\xampp\htdocs\test\upload_file.php on line 2

Med error_reporting(E_ERROR | E_PARSE); så ble alle feilmeldinger borte noen den skal gjøre men jeg får fortsatt opp "Invalid file". Filtypen er jo riktig. Lastet opp en doc fil

 

 

i toppen av PHP-filen eller evt. konfiguere Apache. Du bør selvfølgelig løse problemet, ikke bruke workarounds.

 

Erstatt

 

$extension = end(explode(".", $_FILES["file"]["name"]));

 

med

 

$tmp = explode(".", $_FILES["file"]["name"]);
$extension = end($tmp); 

End krever en referanse. explode(".", $_FILES["file"]["name"]); kan ikke bli omgjort til en referanse. Det er derfor du må tilordne et resultat av explode(".", $_FILES["file"]["name"]); til en variabel.

 

Hva mener du med det siste End krever referanse.....

Endret av corsa91
Lenke til kommentar

Du bruker MIME-typer så du må passe på at disse er korrekte.

 

Her er en liste over Microsoft Office MIME-typer.

 

Og jeg ser du setter "isset()" i toppen av koden din. Dette er feil bruksområde, men konsentrer deg om denne koden først så kan jeg hjelp deg videre. Så fjern denne.

 

Du kan foreløpig bruke

 

error_reporting(E_ERROR | E_PARSE);

 

i toppen av koden din.

 

"Invalid file" oppstår fordi du ikke har spesifisert riktig MIME-typer eller at filformatet ikke er støttet av opplasteren din, noe du selv kan justere på. I den forrige koden jeg la ut fungerte det fint når jeg lastet opp bilder fordi MIME-typene er riktig. Derimot er ikke for eksempel "documents/doc" en gyldig type så dette ville ikke fungert.

 

Og angående spørsmålet ditt om "End" så mente jeg at slik koden var satt opp ikke ble riktig i henhold til PHP-manualen. Dette fikset jeg på, så om du lurer på noe mer ang. dette kan du selv lese deg opp på explode, array og variabler.

 

Hvordan fungerer dette for deg?

 

$allowedExts = array("gif", "jpeg", "jpg", "png", "doc", "docx", "ppt", "pptx", "pdf");
$tmp = explode(".", $_FILES["file"]["name"]);
$extension = end($tmp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "application/msword")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["file"]["type"] == "application/application/vnd.ms-powerpoint")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.presentationml.presentation")
|| ($_FILES["file"]["type"] == "application/pdf"))
&& ($_FILES["file"]["size"] < 9800000)
&& in_array($extension, $allowedExts))
 {
 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"] / 1024) . " 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 "Lagret i: " . "upload/" . $_FILES["file"]["name"];
	  }
}
 }
else
 {
 echo "Invalid file";
 }
}

Endret av winter2012
Lenke til kommentar

For en feilmelding: Parse error: syntax error, unexpected ')' in C:\Program Files (x86)\xampp\htdocs\test\upload_file.php on line 1

 

Fjernet selvsagt siste } da det var feil.

 

Men er det mulig å legge inn en tidsinstilling eller noe sånt via en form slik at etter kl 12 på mandag så er det ikke mulig å levere inn.

 

Og legge inn i flere mapper.

Lenke til kommentar

For en feilmelding: Parse error: syntax error, unexpected ')' in C:\Program Files (x86)\xampp\htdocs\test\upload_file.php on line 1

 

Fjernet selvsagt siste } da det var feil.

 

Men er det mulig å legge inn en tidsinstilling eller noe sånt via en form slik at etter kl 12 på mandag så er det ikke mulig å levere inn.

 

Og legge inn i flere mapper.

 

Hvis du har problemer med koden må du legge den ut. Er dessverre ikke synsk:)

 

Og ja, det går fint an å legge til en tidsinnstilling. Forumet er derimot ikke et sted hvor vi skal gi deg koder i fleng, men et sted hvor vi kan hjelpe deg med problemer. Så foreslår at du googler og researcher litt selv på time() og date(). Det blir også en veldig uryddig tråd om jeg skal hjelpe deg med dette i tillegg.

Endret av winter2012
Lenke til kommentar

Opplasteren fungerer nå.

 

Planen er at man skal opprette en database som holder oversikt over tid og dato. Og når den datoen har passert så skal man ikke ha mulighet til å gå inn for å legge inn filer. Den skal med andre ord synkronisere med databasen.

 

Har et spørsmål første linje er riktig men hva blir det på linje 2. Altså her: mysql_select_db('?????')or

 

Bruker Xampp

 

 

mysql_connect(‘'localhost','root','','root','test',’) or die('Kan ikke koble til db');

mysql_select_db('')or

die('Kan ikke koble til databasen. Vennligst kontakt admin.');

 

Kanskje jeg spør litt for mye... Men som sagt er det en del år siden jeg sist jobbet med PHP og merker at jeg trenger litt oppfriskning.

Endret av corsa91
Lenke til kommentar
  • 4 uker senere...

Hvorfor i alle dager endrer du mange av innleggene til "Løst"? Så viktig å slette alle spor av at du lurte på noe?

 

Denne tråden kunne vært til god hjelp for andre senere, slik at de kanskje ikke hadde trengt å stille de samme spørsmålene.

 

:nei: :nei: :nei: :nei: :nei: :nei:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...