[PHP] Uploaden van een bestand lukt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
beste,

ik probeer een bestand up te loaden met een form, om deze daarna te kunnen parsen en de inhoud in een mysql database te steken.
Nu lukt het uploaden van het bestand niet.
Ik gebruik volgende code
code:
1
2
3
4
5
6
7
    <form id="form3" name="form3" method="post" action="menu.php?action=upload">
      <p>Menu Upload</p>
      <label for="file">Bestand:</label>
      <input name="file" type="file" id="file" />
      <br /> 
      <input type="submit" name="submit" value="Upload" />
    </form>


code:
1
2
3
4
5
6
if($action == "upload"){
    if(isset($_FILES['file']))  {
        echo "bestand upgeload";
    } else {
        echo "bestand NIET upgeload";
}


wat zou ik mis doen?
de array $_FILES['file'] bevat nooit iets wat ik ook doe of verander

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

Verwijderd

Er gaan hier meerdere dingen fout, de waarde van method is sowieso al fout, en met de PHP-code kom je ook al niet ver.

Lees anders gewoon even een paar tutorials door, hieronder een:

http://www.phphulp.nl/php/scripts/2/96/

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
Er mist zoiezo een } bij else als ik het zo zie hoor.
En heel de constructie is zoiezo fout want ik gok dat er zo weinig gebeurt :)
En post zoiezo de relevante code want hier heeft niemand iets aan :)

[ Voor 20% gewijzigd door ID-College op 12-12-2006 00:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Wellicht nog een enctype="multipart/form-data" meegeven aan je form?

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

method="post" is imho gewoon goed hoor.

Ik mis wel een enctype="multipart/form-data" in het form.

Je gebruikt $action, maar staat register_globals wel aan? Zo niet, $_GET['action'] gebruiken.

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
DizzyWeb schreef op dinsdag 12 december 2006 @ 00:06:
method="post" is imho gewoon goed hoor.

Ik mis wel een enctype="multipart/form-data" in het form.

Je gebruikt $action, maar staat register_globals wel aan? Zo niet, $_GET['action'] gebruiken.
<action="menu.php?action=upload"> ;)

Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
ik weet dat de code niet volledig is, maar de volledige file bestaat al uit 300 regels code die eigenlijk niets met dit te maken hebben.

Ik maakte ook eerst een zo eenvoudig mogelijk test situatie, om elke andere fout uit te sluiten,

enctype="multipart/form-data" did the trick, voorlopig werk het nu!

bedankt

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

Verwijderd

ID-College schreef op dinsdag 12 december 2006 @ 00:08:
[...]

<action="menu.php?action=upload"> ;)
Wat wil je hier nou mee zeggen vraag ik me af? Niet elke server accepteerd dit.
Overgens wordt dit gezien als "bad practise".

Google is your friend..

Acties:
  • 0 Henk 'm!

  • programist
  • Registratie: Mei 2003
  • Laatst online: 26-12-2018

programist

Got Milk?

Gebruik het volgende:

PHP:
1
2
3
4
5
6
7
 <form id="form3" name="form3" method="post" action="menu.php" enctype="multipart/form-data">
      <p>Menu Upload</p>
      <label for="file">Bestand:</label>
      <input name="file" type="file" id="file" />
      <br /> 
      <input type="submit" name="submit" value="Upload" />
    </form>


PHP:
1
2
3
4
5
if(isset($_POST['file'])){
    if($_POST['file'] != null){
        //doe je ding           
    }
}


Dit zou je iets moeten oplerveren als ik het niet mis heb

Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
@programist, $_FILES['file'] ipv $_POST['file'] ;)

PHP:
1
2
3
4
if ( isset ( $_FILES['file'] ) && $_FILES['file']['size'] > 0 )
{
    //doe je ding            
}

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

GET parameters in je action is niet alleen lelijk, het is ook nog eens onjuist en makkelijk te voorkomen.
code:
1
2
3
4
<form action="menu.php" ...>
  <input type="hidden" name="action" value="upload"/>
 ...
</form>

[ Voor 3% gewijzigd door Janoz op 12-12-2006 11:31 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Waarom is het lelijk?

Als jij op index.php?p=blabla een upload formulier hebt en je wilt daar een POST naar versturen zul je toch action="index.php?p=blabla" moeten gebruiken, want door "p" op te nemen in je formulier krijg je $_POST['p'] in plaats van $_GET['p'].

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Als je naar de HTTP specificaties kijkt, en dan specifiek naar hoe een request opgebouwd wordt, dan zie je dat een POST en een GET twee apparte request types zijn die je naar de server kunt versturen. Beiden hebben een iets andere opmaak en iets andere betekenis. Ze zijn volgens de specificaties onmogelijk te mixen. Dat het uberhaupt werkt is omdat webservers er eventueel wat coulant mee omgaan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 11-09 14:26
wel, ik gebruik die 'action=' bij nog andere zaken waarbij geen forumuleer gebruikt wordt... daarom is het makelijker om het bij een POST te houden. of toch niet? ik krijg wel werkende code, maar ik weet niet of het ook correcte code is. Ik heb alles uit zelfstudie...
is er een manier om met een url iets mee te geven vb: action=edit, zonder dat dit bovenaan in de url komt? ik wil dus enkel menu.php zien ipv menu.php?action=edit ?

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Acties:
  • 0 Henk 'm!

Verwijderd

LittleWan schreef op dinsdag 12 december 2006 @ 14:16:
wel, ik gebruik die 'action=' bij nog andere zaken waarbij geen forumuleer gebruikt wordt... daarom is het makelijker om het bij een POST te houden. of toch niet? ik krijg wel werkende code, maar ik weet niet of het ook correcte code is. Ik heb alles uit zelfstudie...
is er een manier om met een url iets mee te geven vb: action=edit, zonder dat dit bovenaan in de url komt? ik wil dus enkel menu.php zien ipv menu.php?action=edit ?
Wanneer je een link naar die specifieke pagina plaatst en een click met JS afvangt, kan je een post meegeven via JS. Anders ben je altijd aangewezen tot het gebruik van GET's. Een alternatief daarvoor is eventueel het gebruik van URI's waarbij je de GET's eigenlijk met /var1/var2/var3 opbouwd, dat werkt met Mod Rewrite als ik het goed heb, of bijvoorbeeld het gebruik van een framework zoals Code Igniter, waarbij je met dezelfde URI structuur bepaalde classes en functies binnen deze classes aanspreekt met parameters voor deze functies /class/functie/par1/par2/par3 enz. (www.codeignitor.com)
Pagina: 1