[php] form upload ok, foutmelding bij geen upload

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi Allemaal,

Ik heb een html formpje waarbij ook eventueel een upload gedaan kan worden. Als er geupload wordt werkt het, besluit ik om geen upload te doen dan krijg ik een vervelende foutmelding die ikzelf aangemaakt heb.

heb dit stukje code uit script gepakt, het volgende gebeurt er, mijn script controleert of er een bestand wordt geupload vervolgens wordt de grootte gecontroleerd en daarna het type bestand. Als ik een plaatje upload gaat dit goed!

De user kan echter kiezen om wel of niet een jpeg up te loaden! als ik dus geen plaatje upload krijg ik wel altijd de foutmelding "bestandstype is niet toegestaan"...

Wat ik dus wil is dat als er in het form geen plaatje wordt gekozen om te uploaden er geen foutmeldingen komen. Wat zie ik over het hoofd en hoe kan ik het wel voor elkaar krijgen? Volgens mij klopt die isset functie niet...

bedankt voor jullie hulp!

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
do {

    // controleer of $picture iets bevat, zoniet dan naar false
    if(isset($picture)) {
        
    // check max file size niet te groot
    if(getenv("CONTENT_LENGTH") > MAX_FILE_SIZE) {
        print_error("bestand is te groot: $picture_name");
            break;
    }

    // check voor juiste bestandstype
    if ($picture_type != "image/pjpeg") {
       print_error("bestandstype is niet toegestaan: $picture_type");
       break;
    }

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Zet eens de lengte van je file als het bestandstype niet is toegestaan :+

Nu je dat weet, kan je zelf een oplossing aanbrengen hoe je het zou kunnen herkennen?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmmm... Klinkt heel mysterieus en vast heel simpel voor diegene die hem snapt maar ik weet het niet.

Wat bedoel je precies met lengte? De grootte van het bestand?
ik heb de grootte van het bestand nl met een define vastgesteld

code:
1
define("MAX_FILE_SIZE", 200*1024);


vage is wel dat hij nu als foutmelding geeft dat het octet/stream bestandstype niet geupload mag worden als ik geen bestand selecteer mbv mijn form... :-(

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 16:51
De onderste if moet binnen de eerste if staan.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Debian_Vs_Win2K:
vage is wel dat hij nu als foutmelding geeft dat het octet/stream bestandstype niet geupload mag worden als ik geen bestand selecteer mbv mijn form... :-(
application/octet-stream is het bestandstype dat meegegeven wordt als het bestandstype door het OS niet bepaald kan worden. Dat betekent in heel veel gevallen dat je een bestand geselecteerd hebt dat niet bereikbaar is, leeg is, beschadigd is of (op windows) geen extensie heeft.

Overigens wordt al een tijdje aangeraden de $_FILES array te gebruiken. Zie voor meer informatie daarover de FAQ.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 18:14
Lezen is natuurlijk een vak apart....
Volgens mij wil Debian_VS_Win2K dat zijn script het ge-uploade bestand alleen verwerkt als er daadwerkelijk een bestand wordt ge-upload. Waar het misgaat is idd in de isset functie, zoals hij zelf al aangeeft.

Blijkbaar wordt $picture eerder in zijn script 'geset' zodat $picture altijd bestaat en de isset dus geen onderscheid maakt.

Dit kun je waarschijnlijk verhelpen door de regel (regel 4) te veranderen in
PHP:
1
if ($picture != '') {


dit zijn twee single-quotes, geen dubbele.....

[ Voor 4% gewijzigd door T-MOB op 30-09-2003 09:17 . Reden: regel# - wel zo makkelijk ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

T-MOB:
Lezen is natuurlijk een vak apart....
Volgens mij wil Debian_VS_Win2K dat zijn script het ge-uploade bestand alleen verwerkt als er daadwerkelijk een bestand wordt ge-upload. Waar het misgaat is idd in de isset functie, zoals hij zelf al aangeeft.
In dat geval kun je beter uit dit lijstje de laatste pakken.

PHP:
1
2
3
4
5
6
7
8
9
10
switch ( $_FILES [ 'file' ] [ 'error' ] ) {
   case UPLOAD_ERR_OK:
      //handle upload
   break;
   case UPLOAD_ERR_NO_FILE:
      //no problem, no uploaded file is also ok
   break;
   default:
      //print error message
   break;

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1