webForumDet fria alternativet

ladda upp filer problem!

5 svar · 421 visningar · startad av Åssi

ÅssiMedlem sedan feb. 20063 inlägg
#1

Ska bygga en enkel bildarkivfunktion...
Här är formuläret...

<form action='bildArkiv.php?goTo=doAdd' method='POST'>
<!-- enctype='multipart/form-data' (Vill inte fungera!)-->

<input type='hidden' name='MAX_FILE_SIZE' value='2000000'>

<input type='file' name='bild'>

<input name='submit' type='submit' value='Ok'>

</form>

...men fungerar endast i explorer.
Jag kollar bildens url i bildArkiv.php

$this->bild = $_POST['bild'];

Explorer fixar hela filens sökväg men inte
Netscape och Firefox de får bara med filnamnet.

Därmed kan inte phpscriptet kopiera filen.

jag kan heller inte lägga till enctype='multipart/form-data i form taggen. Då fungerar ingenting.

har inte använt detta forum förut och är tacksam för hjälp!

PeddaMedlem sedan juni 20006 032 inlägg
#2

Välkommen till wF.

enctype='multipart/form-data ska användas när man laddar upp filer, så lite mer kod från bildArkiv.php skulle nog hjälpa.
Varför ska du ha bildens url? Bilden hamnar i tmp mappen tills du gör move_uploaded_file

The_HulkMedlem sedan juni 20031 837 inlägg
#3

Du kanske kan få lite tips i denna tråden http://www.webforum.nu/showthread.php?t=139257

ÅssiMedlem sedan feb. 20063 inlägg
#4

Lite mer kod...

/******Formuläret************
echo "<form action='adminBildArkiv.php?goTo=doAdd'

method='POST'>";//enctype='multipart/form-data'enctype='multipart/form-data' -Vill inte heller fungera!...
echo "<input type='hidden' name='MAX_FILE_SIZE' value='2000000'>";

echo "\<p\>Välj bild: \<input type='file' name='bild' size='25' class='textbild'\>\</p\>";
echo "\<p\>Bildtext:\</p\>\<textarea name='bildText'cols='10' rows='30' class='textinput'\>Bilden 			

föreställer...\</textarea\>\<br\>";

echo "\<p\>Bildens namn:\</p\>\<input type='text'class='rubrikinput' value='' name='bildNamn'\>";
echo "\<p\>Alternativ text:\</p\>\<input type='text'	class='rubrikinput' value='' name='altText'\>";

echo "\<p\>\<br\>\<input name='submit' type='submit' value='Ok' class='submit'\>&nbsp;\<input name='reset' 

type='reset' value='Ångra'class='submit'></p>";

echo "\</form\>";

*/

//****************************************************
//C:\Documents and Settings\Åsa\Skrivbord\avatar.jpg -sökvägen som visas i IE...

//*********** Felmeddelande i firefox ************

//Warning: filesize(): Stat failed for avatar.jpg (errno=2 - No such file or directory) in

//D:\dokument\Webbproduktion\flundra\php\bildArkivFunctions.php on line 119

//Warning: copy(avatar.jpg): failed to open stream: No such file or directory in

//D:\dokument\Webbproduktion\flundra\php\bildArkivFunctions.php on line 123

//***************************************************
function doAdd()
{
$this->bild = @$_POST['bild'];

$this-\>bildText	=	@$\_POST\['bildText'\];
$this-\>altText	=	@$\_POST\['altText'\];
$this-\>bildNamn	=	@$\_POST\['bildNamn'\];
$this-\>datum	=	$this-\>datum=date('Y-m-d');
$this-\>MAX_FILE_SIZE	=	@$\_POST\['MAX_FILE_SIZE'\];

Jag kör en echo för att kolla det som kommer från formuläret.
echo "$this->bild<br>$this->bildText<br>$this->altText<br>$this->datum<br> $this->MAX_FILE_SIZE";

$extention=explode(".",$this-\>bild);
$num=count($extention)-1;

//\*\*\*\*\*\*För att skapa ett unikt bildnamn \*\*\*\*\*\*\*\*\*\*\*
$this-\>randomName1=rand(1,500);
$this-\>randomName2=rand(7,300);
$this-\>randomName =$this-\>randomName1+$this-\>randomName2;

		if($this-\>bildNamn=="")
		{$this-\>bildNamn	=	"bild\_".$this-\>datum."\_".$this-\>randomName;
		echo "\<h2\>Bildnamn: $this-\>bildNamn\</h2\>";
		}
		
$imagename="img/bildbank/$this-\>bildNamn.$extention\[$num\]";

$this-\>bildnamn	=	$this-\>bildNamn.".".$extention\[$num\];
	
$this-\>size=filesize($this-\>bild);//kollar filstorleken
	
	//echo "$imagename,$this-\>bild";
	if($this-\>size\<$this-\>MAX_FILE_SIZE )
		{
		copy($this-\>bild,$imagename);// undarar varför det inte funkar i Firefox....	
		}

//***************************************************
//Här efter kommer lite databas kod men den fungerar!

//copy($this->bild,$imagename); verkar bara fungera i IE, alltså sökvägen till filen ,$this->bild, är inte

fulständig i Firefox...

The_HulkMedlem sedan juni 20031 837 inlägg
#5

Det verkar som om du skickar med hela sökvägen och då fungerar det att kopiera filen så länge du kör på din lokala dator där filen finns. Kommer inte att fungera om du har webservern på en annan dator än webläsaren.

Du ska använda move_uploaded_file istället för copy. Titta mer i den andre tråden jag länkade till ovanför, där har du kod för att hantera uppladdade filer.

ÅssiMedlem sedan feb. 20063 inlägg
#6

Tusen tack och puss på er!

move_uploaded_file('filename','destination') var haken!
:)

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)