webForumDet fria alternativet

Fel i uppladdnings-kod

PHP

27 svar · 586 visningar · startad av filipbh

Medlem sedan juli 2002405 inlägg
Frågan#1

Vad är det för fel på denna kod?

<?
if($_POST[upload]){

$fil=$_POST[filen];

if ($_POST[filen] != "" && $_POST[filen] != "none") {
copy($_POST[filen], "bilder/profil/".$_SESSION[inl_id]."/bilder/$fil_name");
echo "Du laddade upp " . $fil_name . "<br>";
echo "Filstorlek " . $fil_size . "<br>";
echo "Filtyp " . $fil_type . "<br>";
}
else
echo "Ingen fil laddades upp";
}
?>

Tacksam för snabbt svar ;)

Medlem sedan juni 20034 013 inlägg
#2

Du har inte apostrofer runt filen. Ska se ut så här:

$_POST['filen']

Sen ska du nog läsa lite i manualen. Variabeln du ska använda dig av heter $_FILES

http://se.php.net/manual/en/features.file-upload.php

Medlem sedan apr. 2004113 inlägg
#3

kan någon förklara vad if-satsen gör? Om $_POST[upload] vadå? :S

Medlem sedan juni 20034 013 inlägg
#4

Det en if-sats gör är att den kollar om något är sant eller falskt. Är det sant utförs if-satsen. Är det falskt utförs det inte.

Det som är falskt är:
0
ingenting
false

Det som är true är i princip resten.

Så det den gör är att den kollar om $_POST['upload'] är något.

Medlem sedan juli 2002405 inlägg
#5

Om man tryckt på knappen med namnet "upload" så ska uppladdningen ske..

Det löste sig när jag använde $_FILES.. Men jag kan inte få in filen i mappen bara :/

Vet inte vad man har för rättigheter på b-one men man borde ju kunna lägga upp...
Det här visas vid uppladdning: "Warning: copy(Array): failed to open stream: No such file or directory in /customers//httpd.www/bilder.php on line 30"

Rad 30 är: "copy($_FILES['filen'], "bilder/profil/$_SESSION[inl_id]/bilder/$_FILES['filen']['name']"); "

Mappen finns så det måste vara någonting annat...

Medlem sedan juli 2002405 inlägg
#6

Bytte ut copy till move_uploaded_file.. Det kom inte fram något felmeddelande men filen laddades ändå inte upp.

Medlem sedan apr. 2004113 inlägg
#7

tydal,
isset alltså?

Medlem sedan juli 2002405 inlägg
#8

Typ...

Det fungerar utan isset så därför jag inte har med det..

Medlem sedan juni 20034 013 inlägg
#9

Namnet på filen är $_FILES['filen']['tmp_name']

Medlem sedan juni 20034 013 inlägg
#10

Kenchu skrev:

tydal, isset alltså?

Inte riktigt:

(Gissa först hur du tror resultatet blir, kolla sen vad det blir och läs slutligen mitt första svar till dig igen :-)

<?php
$a = 0;
if (isset($a))
{
  echo("Ja ");
}
else
{
  echo("Nej ");
}

if ($a)
{
  echo("Ja ");
}
else
{
  echo("Nej ");
}
?>
Medlem sedan juli 2002405 inlägg
#11

Ska testa det sen.. Måste logga ut. Tack så länge

Medlem sedan juni 20034 013 inlägg
#12

filipbh skrev:

Det fungerar utan isset så därför jag inte har med det..

Det är inte alltid det gör det eftersom det är skillnad. Så länge man är väl förtrogen med skillnaden kan man ju använda vilket man vill (eftersom man då vet vad man gör :-) men om man inte är riktigt hundra rekommenderar jag att man alltid använder isset eftersom det oftast är det man menar :-)

Medlem sedan apr. 2004113 inlägg
#13

<?php

$file_dir  = "../pics/";
  
if ($_POST) {
	$newfile = $file_dir.$_FILES['myfiles']['name'][0];
	move_uploaded_file($_FILES['myfiles']['tmp_name'][0], $newfile);

	echo "Successfully uploaded file!";
}

print "<form method='post' enctype='multipart/form-data'>";
print "<input type='file' name='myfiles[]' size='30'><br>";
print "<input type='submit' name='action' value='Upload'>";
print "</form>";

?>

Hittade ett skript på nätet som jag modifierade lite. Förstår det nästan. Har egentligen inte läs det här om FILES och move_uploaded_file, men iaf! Förstår inte vad den där 0:an gör. Vad gör den?

Medlem sedan juli 20023 617 inlägg
#14

Kenchu skrev:

Förstår inte vad den där 0:an gör. Vad gör den?

Skulle vara kul att veta. Gör det någon skillnad om du tar bort den

filipbh: Fick du ditt skript att fungera?

Medlem sedan juli 20023 617 inlägg
#15

Kenchu skrev:

Förstår inte vad den där 0:an gör. Vad gör den?

Skulle vara kul att veta. Gör det någon skillnad om du tar bort den?

filipbh: Fick du ditt skript att fungera?

Medlem sedan apr. 2004113 inlägg
#16

fiddler skrev:

Kenchu skrev:

Förstår inte vad den där 0:an gör. Vad gör den?

Skulle vara kul att veta. Gör det någon skillnad om du tar bort den?

filipbh: Fick du ditt skript att fungera?

Jepp, det fungerar inte om man tar bort den. :S

Medlem sedan juli 2002405 inlägg
#17

Har inte hunnit testa det tyvärr.. Har inte kommit åt datorn. Ska testa det i början av nästa vecka. Hoppas det fungerar...

Medlem sedan juli 2002405 inlägg
#18

Filen laddades upp =) Men det kommer fram felmeddelanden som jag inte har hunnit gå igenom..

Medlem sedan juli 2002405 inlägg
#19

Det fungerar utmärkt..

En fråga jag har är hur man får reda på storleken och filtypen bara...

Har testat med echo $_FILES['filen']['tmp_type'][0]; men den skriver inte ut något...

Medlem sedan juni 20006 031 inlägg
#20

Filstorlek får du med $file['size']

r/ Såg nu att du ville ha filändelsen också.
Finns säkert enklare sätt än denna

$filandelse = explode('.',$file['name']); 
$sort = count($filandelse) - 1; 
$sort = $filandelse[$sort];
echo $sort;
306 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
164 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
166 ms — ändringar (db)