Avatar billede 7th Praktikant
11. juli 2003 - 01:32 Der er 18 kommentarer og
1 løsning

Billede og $_FILES

Kan man overskrive et billede med et andet billede, eller er man nød til først at slette det billede der skal erstattes?

Hvordan checker jeg om <input name="billede" type="file" value=""> er tomt?
Avatar billede ahv Nybegynder
11. juli 2003 - 01:35 #1
Du kan godt bare overskrive, du kan tjekke med ->

if (isset($_FILES['billede'])) {
// Den er ikke tom
Avatar billede 7th Praktikant
11. juli 2003 - 01:39 #2
Burde dette ikke virke så?

<?
if (! isset ($_FILE['billede']))
{
echo "intet billede...";
}

if (isset ($_FILE['billede']))
{
echo "billede fundet...";
}
?>

<form action="filupload.php" enctype="multipart/form-data" method="post" name="uploadform">
<input name="billede" type="file" value="">
<br>
<input name="go" type="submit" value="go">
</form>

Hedder det at overskrive noget bestemt, eller skal jeg bare køre en move_uploaded_file sætning?
Avatar billede ahv Nybegynder
11. juli 2003 - 01:45 #3
<?
if (isset($_POST['go'])) {
if (! isset ($_FILE['billede']))
{
echo "intet billede...";
}

if (isset ($_FILE['billede']))
{
echo "billede fundet...";
}
}
?>

<form action="filupload.php" enctype="multipart/form-data" method="post" name="uploadform">
<input name="billede" type="file" value="">
<br>
<input name="go" type="submit" value="go">
</form>

Du bruger bare en move til at overskrive.
Avatar billede 7th Praktikant
11. juli 2003 - 01:52 #4
Jeg ved godt formen intet oploader, men hvis man placerer et filnavn / en filsti i inputfeltet og trykker go, burde den så ikke skrive billede fundet...?

http://www.justrandb.dk/filupload.php
Avatar billede ahv Nybegynder
11. juli 2003 - 01:53 #5
Hmm jo prøv ->

<?
if (isset($_POST['go'])) {
if (!isset($_FILE['billede'])) {
echo "intet billede...";
} else {
echo "billede fundet...";
}
}
?>
Avatar billede tipsen Nybegynder
11. juli 2003 - 01:54 #6
$_FILES[] :-)
Avatar billede ahv Nybegynder
11. juli 2003 - 01:55 #7
Smukt Tommy :o)

7th Sådan noget kan du ikke bare ændre i når jeg havde postet det rigtige fra start, ikke her midt om natten ;o)
Avatar billede ahv Nybegynder
11. juli 2003 - 01:55 #8
<?
if (isset($_POST['go'])) {
if (!isset($_FILES['billede'])) {
echo "intet billede...";
} else {
echo "billede fundet...";
}
}
?>
Avatar billede 7th Praktikant
11. juli 2003 - 01:58 #9
Hehe sjov fejl, det forklarer jo det hele. Læg mærke til jeg skrev det rigtig i spørgsmålstitlen :) Takker for hjælpen, og prøver et eller andet med move.
Avatar billede martinbk Nybegynder
11. juli 2003 - 02:03 #10
Avatar billede 7th Praktikant
11. juli 2003 - 02:09 #11
Hov jeg var lidt for hurtig på aftrækkeren, den driller altså stadigvæk. Check http://www.justrandb.dk/filupload.php og tryk på go uden at gennemse først. Det er jo ikke meningen :)
Avatar billede ahv Nybegynder
11. juli 2003 - 02:11 #12
<?
if (isset($_POST['go'])) {
if (!$_FILES['billede']) {
echo "intet billede...";
} else {
echo "billede fundet...";
}
}
?>
Avatar billede 7th Praktikant
11. juli 2003 - 02:15 #13
Den gør desværre det samme. Den vil simpelthen ikke skrive intet billede.
Avatar billede 7th Praktikant
11. juli 2003 - 02:24 #14
Jeg har løst problemet nu med koden...

<?
if (($_FILES['billede']['size']) == 0)
{
echo "intet billede...";
}

else
{
echo "billede fundet...";
}
?>
Avatar billede martinbk Nybegynder
11. juli 2003 - 10:56 #15
utestet:

if (isset($_POST['go'])) {
if (!$_FILES['billede']['tmp_name']) {
  echo 'intet fundet';
} else {
  echo 'billede fundet';
}
}
og for at overskrive gør bruger du bare :

move_uploaded_file($_FILES['billede']['tmp_name'], $_FILES['billede']['name']);

jeg ville nu nok vælge følgende løsning istedet for at overskrive billederne:
$nr = 1;
$pic = $_FILES['billede']['name'];
while(file_exists($_FILES['billede']['name'])){
$pos = strrpos($pic, ".");
$name = substr($pic, 0, $pos);
$ext = substr($pic, $pos, strlen($pic)-$pos);
if(ereg("[0-9]", substr($name, -1) ))
  $pic = substr($name, 0, strlen($name)-1) . "$nr" . "$ext";
else
  $pic = "$name" . "_$nr" . "$ext";
}
move_uploaded_file($_FILES['billede']['tmp_name'], $pic);

på denne måde undgår du at overskrive dine billeder, håber det hjalp bare lidt :)
Avatar billede 7th Praktikant
11. juli 2003 - 23:13 #16
Takker for hjælpen, har ikke testet endnu. Meningen er faktisk at overskrive et billede. move_uploaded_file virkede fint. Grunden til at jeg ikke troede det virkede i første omgang, og derfor spurgte var, at når jeg overskrev et billede, blev det nye ikke vist med mindre jeg refreshede siden.
Avatar billede 7th Praktikant
12. juli 2003 - 00:38 #17
if (isset($_POST['go'])) {
if (!$_FILES['billede']['tmp_name']) {
  echo 'intet fundet';
} else {
  echo 'billede fundet';
}
}

virker smukt og bedre end mit forslag. Det mærkelige er bare at jeg ikke kunne få det til at virke på mit webhotel, så jeg ændrede (!$_FILES['billede']['tmp_name']) til (empty ($_FILES['billede']['tmp_name'])), og så virker det også der :) Tak for hjælpen.
Avatar billede tipsen Nybegynder
12. juli 2003 - 01:08 #18
Det er også mere korrekt med empty() eller evt. isset() el. is_array()
Avatar billede 7th Praktikant
17. juli 2003 - 05:05 #19
Oki :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester