[PHP] Code ok, maar upload file wil niet?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
Het is nogal frustrerend als de code, dat elders wel goed werkt, het toch niet wil lukken in andere php script. Toch zitten er geen fouten in, de code is identiek.
In andere script werkt het wel. Maar waarom wil het niet meer in andere script?

Hoe ga ik controleren wat er mis gegaan kan zijn?

De code is hier:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
$path="../data/";
$fullpath=realpath("..")."/data/";
    // uploaden images
        $error=false;
        if (is_uploaded_file($_FILES['grootfoto']['tmp_name']))
            {
            list($width,$height) = getimagesize($_FILES['grootfoto']['tmp_name']);
            echo "De grote foto is ".$width."x".$height." pixels. ";
            if ($width>300 or $height>300)
                { echo "<font color=red>Het is te groot.</font><br>"; $error=true; }
                else
                {
                if (($_FILES['grootfoto']['type'] == $cert1) or ($_FILES['grootfoto']['type'] == $cert2) or ($_FILES['grootfoto']['type'] == $cert3) or ($_FILES['grootfoto']['type'] == $cert4))
                    {
                    if (file_exists($fullpath . $_FILES['grootfoto']['name']))
                        {
                        $nr=1;
                        while (file_exists($fullpath . renamefile($_FILES['grootfoto']['name'],"_".$nr)))
                            { $nr=$nr+1; }
                        }
                    if ($nr==0)
                        {
                        $res = copy($_FILES['grootfoto']['tmp_name'], $fullpath . $_FILES['grootfoto']['name']);
                        }
                        else
                        {
                        $res = copy($_FILES['grootfoto']['tmp_name'], $fullpath . renamefile($_FILES['grootfoto']['name'],"_".$nr));
                        }
                    if (!$res)
                        { echo "<font color=red>Upload grote foto is niet gelukt!</font><br>"; $error=true; }
                        else
                        {
                        echo "<font color=green>Upload grote foto is succesvol!</font><br>";
                        if (file_exists($fullpath.$foto)) { unlink($fullpath.$foto); }
                        if ($nr==0)
                            { $foto=$_FILES['grootfoto']['name']; }
                            else
                            { $foto=renamefile($_FILES['grootfoto']['name'],"_".$nr); }
                        }
                    }
                    else
                    { echo "<font color=red>Verkeerde type bestand bij grote foto! Graag aanpassen!</font><br>"; $error=true; }
                }
            }
            else
        { 
        echo "Geen foto geupload. De huidige data blijft behouden.<br>"; 
        }


De invoerveld van formulier is niet meer dan dit:
code:
1
2
3
4
5
6
7
8
9
<tr bgcolor="#CCCCCC">
      <td><strong>Foto</strong></td>
      <td><input name="grootfoto" type="file" size="40">
        <em> Alleen 300x300 pixels of kleiner</em><br>
        <input name="foto" type="hidden" value="<?=$foto;?>"><input name="nofoto" type="checkbox" id="nofoto" value="nofoto">
        Geen foto.<em> Bestaande foto wordt verwijderd. Aanvinken is niet verplicht 
        bij geen foto.</em><?
        if (!empty($foto)) {?><br>[img]"<?=$path.$foto;?>"><?[/img]</td>
    </tr>


Wat zijn je gedachten over een vreemd probleem van mij?

Acties:
  • 0 Henk 'm!

  • P-ter
  • Registratie: Februari 2002
  • Laatst online: 16:01

P-ter

...

Staan de rechten voor de map waarin de foto's/bestanden geupload dienen te worden goed?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

gebruik in plaats van copy eens de standaard php functies voor het verplaatsen van uploaded files (http://www.php.net/manual/nl/function.move-uploaded-file.php) De files owrden in de tmp directory van de server gezet waarna je de file kan verplaatsen. Verdre kan je met wat simpele debug code zoals is_uploaded, is_writable (ook voor directories) en file_exists :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

MrDummy schreef op woensdag 15 december 2004 @ 12:56:
Het is nogal frustrerend als de code, dat elders wel goed werkt, het toch niet wil lukken in andere php script. Toch zitten er geen fouten in, de code is identiek.
In andere script werkt het wel. Maar waarom wil het niet meer in andere script?
Wat werkt er precies niet? Heb je al gecontroleerd waar de geuploaded files terecht komen en of ze worden verplaatst. En als ze worden verplaatst, gebeurt dit dan ook naar de juiste directory?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
Wel, in andere script (dezelfde upload directory van dezelfde site, dus het moet gewoon lukken) gaat het prima. Dit is gewoon script in dezelfde website. Er is niks veranderd, gewoon copy paste van code voor nieuwe script ernaast voor andere site onderdeel.
De uploaddir /data/ wat je ziet is met chmod 777 gedaan.

Dus ik keek wel heel raar op waarom het niet doet. Wat ik zie is dat is_upload_file al snel wordt 'overgeslagen' en meteen message afdrukt dat het niet geupt is.
Ik vraag me af waarom het niet gaat. Het zou toch niet veel uitmaken dat je code overneemt in andere script op dezelfde site!

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Heb je de juiste "encoding" voor je form gezet?

code:
1
encoding="multipart/form-data"

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • MrDummy
  • Registratie: April 2000
  • Laatst online: 25-07 12:00

MrDummy

Nog steeds gek op anime...

Topicstarter
TeeDee schreef op woensdag 15 december 2004 @ 15:47:
Heb je de juiste "encoding" voor je form gezet?

code:
1
encoding="multipart/form-data"
NEE Juist niet!

Dus dat verklaart alles 8)7 8)7 8)7
Zonder deze encoding zal script inderdaad niet functioneren. Heb namelijk snel form erin gegooid in Dreamweaver. Daarbij is die encoding niet ingesteld.
Volgende keer dus onthouden. Misschien ook wel handig voor FAQ :)
Pagina: 1