Foto uploaden naar database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis WhoCares

Dennis WhoCares

30/03/2013 15:45:43
Quote Anchor link
Jaa daar ben ik weer hoor. Ik heb een tijdje geleden een scriptje gemaakt om foto's naar de database te uploaden. Nou is er geen probleem met het uploaden of dergelijke, alleen een vreemd voorval.

Ik heb t net in mn site geimplementeerd, en ik ging testen met eigenlijk behoorlijk grote foto's
(gemaakt met een canon spiegelreflex camera).
Deze foto's worden vanuit de camera opgeslagen als bijv.
IMG_0246.JPG

Zodra ik dit wil uploaden naar mijn profiel foto's. Krijgt mijn script geen 'file type' door.
Ik heb geprobeerd de filetype te echo'en, maar kwam gewoon niks uit, gewoon leeg.

Zodra ik deze foto open met paint, en opnieuw opsla, gewoon zelfde naam etc. Doet ie het wel.
Rara? Heeft dit te maken met de camera? De foto's zijn verder goed, alleen kan ze niet direct uploaden zoals ik ze van de camera afgehaald heb. Wel een domper eigenlijk.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$_FILES['fotobestand']['type']
 
PHP hulp

PHP hulp

01/10/2020 01:40:37
 
Reshad F

Reshad F

30/03/2013 15:47:49
Quote Anchor link
krijg je een error?
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 15:53:31
Quote Anchor link
Nee ik krijg geen error
ja een zelf gemaakte fout afhandeling:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
type:
De extentie van uw plaatje is niet toegestaan om te uploaden als avatar!
Toegestane extenties zijn: .gif, .jpg, .png


type: staat als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<h1>type:' . $_FILES['fotobestand']['type'] . '</h1>';

Maar zoals je ziet bij m'n c/p van mn fout afhandeling, is deze gewoon leeg... Dus valt ie niet in de array van mijn toegestane extenties, zie hier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$toegestaan = array('image/gif', 'image/jpeg', 'image/png', 'image/bmp', 'image/x-png');


__Wijziging: Teveel c/p met output van de website (niet relevant en zal waarschijnlijk ook niet de bedoeling zijn dat deze dingen op phphulp komen te staan xD )
Gewijzigd op 30/03/2013 15:54:59 door Dennis WhoCares
 
Reshad F

Reshad F

30/03/2013 15:58:55
Quote Anchor link
euhm just curiousity denk ik maar welke extentie krijgen ze vanaf de camera?
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 16:03:00
Quote Anchor link
Reshad F op 30/03/2013 15:58:55:
euhm just curiousity denk ik maar welke extentie krijgen ze vanaf de camera?


Dennis WhoCares op 30/03/2013 15:45:43:
Deze foto's worden vanuit de camera opgeslagen als bijv.
IMG_0246.JPG

:-)
Ze zijn alleen +/- 2,5 to 3 mb groot
Gewijzigd op 30/03/2013 16:03:22 door Dennis WhoCares
 
Erwin H

Erwin H

30/03/2013 16:04:01
Quote Anchor link
Ik heb zelf een EOS350D en net getest met een recente foto en bij uploaden krijg ik gewoon het type te zien. Kan je ergens twee foto's neerzetten, een probleemgeval en een goede, zodat we ermee kunnen testen?
 
Obelix Idefix

Obelix Idefix

30/03/2013 16:06:25
Quote Anchor link
Kijk anders eens via de verkenner naar de detailgegevens van een 'goede' en 'foute' afbeelding.
 
Erwin H

Erwin H

30/03/2013 16:08:46
Quote Anchor link
Dennis WhoCares op 30/03/2013 16:03:00:
Ze zijn alleen +/- 2,5 to 3 mb groot

Ah, is dat dan niet het probleem? Zijn ze niet gewoon te groot en wordt de upload niet geblokkeerd? Print eens de hele $_FILES naar het scherm, staat er een foutmelding bij? (error > 0)
Als de upload geblokkeerd wordt dan krijg je namelijk ook verder geen gegevens te zien (dus ook geen type).
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 16:16:49
Quote Anchor link
Ik geef mijn script een max. waarde aan wat er geupload mag worden.
Deze heb ik zodanig verhoogt, dat dit geen probleem is, maar deze error geeft hij ook niet aan, want hij controlleert eerst de type. Maar het probleem zit hem al bij het uploaden naar tmp..
Dit is direct NA het submitten van mn form.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$error = array();
define('MAX_FILE_SIZE', 5000000);
$file = str_replace(' ', '_', $_FILES['pic_file']['name']);
$mimetype = $_FILES['pic_file']['type'];
if ($mimetype == 'image/pjpeg') {
    $mimetype= 'image/jpeg';
}
$permitted = array('image/gif', 'image/jpeg', 'image/png', 'image/bmp', 'image/x-png');

//Weergeven van file type, al voordat we uberhaubt iets gaan controlleren of doen
//(Puur voor debug)
echo '<h1>type: ' . $_FILES['pic_file']['type'] . '</h1>';

if (in_array($mimetype, $permitted)) {
    if($_FILES['pic_file']['size'] > 0    && $_FILES['pic_file']['size'] <= MAX_FILE_SIZE) {                        
        switch($_FILES['pic_file']['error']) {
            ...Error afhandeling waar mn script overigens niet in komt..
        }
    } else {
        $error[] = 'TE GROOT!</li>';
    }
} else {
    $error[] = 'Extentie niet toegestaan blah'; // <---- Waar mijn script heen gaat.
}


Zoals ik ook al zei, als ik de foto open in paint, niks aan doe, en gewoon opnieuw opsla over het orgineel
doet ie het wel, hoewel het plaatje dan 6 keer zo klein wordt in bytes.
 
- SanThe -

- SanThe -

30/03/2013 16:19:06
Quote Anchor link
.JPG is niet hetzelfde als .jpg
 
Obelix Idefix

Obelix Idefix

30/03/2013 16:21:41
Quote Anchor link
Dennis WhoCares op 30/03/2013 16:16:49:
Zoals ik ook al zei, als ik de foto open in paint, niks aan doe, en gewoon opnieuw opsla over het orgineel
doet ie het wel, hoewel het plaatje dan 6 keer zo klein wordt in bytes.

Je gaf eerst aan dat ze 2,5 tot 3 mb groot zijn. Nu geef je aan dat ze door Paint kleiner worden. Er gebeurt dus wel degelijk wat...

Sluit me aan bij Erwin H:

Erwin H op 30/03/2013 16:08:46:
Zijn ze niet gewoon te groot en wordt de upload niet geblokkeerd?

Dat je in het script het hebt aangepast wil niet zeggen dat dit ook effect heeft.
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 16:22:01
Quote Anchor link
Nee want JPG is met hoofdletters.

Als ik de foto open met paint, en ik doe direct opslaan, met precies dezelfde naam
en ook met de extentie in hoofdletters. Is er niks aan de hand, het script upload gewoon.

Overigens zijn er geen verschillen in de probleem foto en goede foto.
Alleen dat ik m zelf nog eens opnieuw opgeslagen heb.
Enige verschil is de grote van het bestand en de kwaliteit omdat paint gewoon crap is :P

Toevoeging op 30/03/2013 16:22:56:

Obelix en Idefix op 30/03/2013 16:21:41:
Sluit me aan bij Erwin H:

Erwin H op 30/03/2013 16:08:46:
Zijn ze niet gewoon te groot en wordt de upload niet geblokkeerd?

Dat je in het script het hebt aangepast wil niet zeggen dat dit ook effect heeft.


Of terwijl ik kan met een formulier geen bestanden van 3 mb doorvoeren naar php script. ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form method="post" action="index.php?page=profilepics" enctype="multipart/form-data">


Zodra ik dit formulier submit, met mn foto
En ik heb een echo met mijn file type en file size gelijk als eerste
Is de type leeg, en size = 0
Gewijzigd op 30/03/2013 16:25:15 door Dennis WhoCares
 
- SanThe -

- SanThe -

30/03/2013 16:24:42
Quote Anchor link
Standaard maximum upload instelling staat volgens mij op 2MB.
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 16:26:02
Quote Anchor link
- SanThe - op 30/03/2013 16:24:42:
Standaard maximum upload instelling staat volgens mij op 2MB.


Werkelijk? Kan dit aangepast worden vanaf php script, of kan alleen de server admin dat?

Toevoeging op 30/03/2013 16:27:26:
Nou je dat zei ging ik toch even kijken :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
ini_set('post_max_size', '3M');
ini_set('upload_max_filesize', '3M');


Werkt dit op dedicated servers?
Gewijzigd op 30/03/2013 16:27:57 door Dennis WhoCares
 
Erwin H

Erwin H

30/03/2013 16:28:35
Quote Anchor link
Ook al is het dus blijkbaar niet het probleem, toch even over grootte van het bestand. Dat is ook geregeld door php zelf al in de ini. Dus ook al check je er zelf nog op, als er in de ini iets kleiners staat dan krijg je een groter bestand er niet doorheen. Overigens kan je die waarde in de ini ook niet veranderen in je script zelf, omdat dat maximum al geforceerd wordt voor je script start.

http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize

Edit: kwamen wat posts bij terwijl ik dit aan het zoeken was, mogelijk dus toch het probleem...
Gewijzigd op 30/03/2013 16:29:41 door Erwin H
 
Dennis WhoCares

Dennis WhoCares

30/03/2013 16:32:23
Quote Anchor link
Gha stik..
mijn lokale php.ini
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
post_max_size = 8M
upload_max_filesize = 2M


Is er een manier om deze waarde gewoon te printen naar het scherm?
Zodat ik kan zien wat de waarde is op de dedicated server?

Toevoeging op 30/03/2013 16:35:35:

Gevonden:
echo ini_get('post_max_size');
echo ini_get('upload_max_filesize');

dank jullie wel allen voor de hulp :)
 
Niek Kasius

Niek Kasius

15/09/2013 03:03:03
Quote Anchor link
Als je regel 5 nu eens verwijderd
Want pjpeg is toch geen standaard file extentie, kijk hier maar eens. http://www.freeformatter.com/mime-types-list.html

En kijk ook hier eens daar staat wat een foto doet als die voordat die compleet op een site verschijnt. http://www.netadvies.nl/advies/grfxguid.html#PJPEG
 
Obelix Idefix

Obelix Idefix

15/09/2013 10:01:33
Quote Anchor link
Afgaande op de laatste reactie van Dennis was het al opgelost, dus om dan na bijna een half jaar nog een reactie te posten.

Je opmerking over regel 5 begrijp ik niet: er wordt controleert of het pjpeg is, zo ja, neem dan aan dat het jpeg is.
Wat heeft je andere opmerking te maken met het probleem wat Dennis had?
 
Niek Kasius

Niek Kasius

03/10/2013 03:22:05
Quote Anchor link
Obelix en Idefix op 15/09/2013 10:01:33:
Je opmerking over regel 5 begrijp ik niet: er wordt controleert of het pjpeg is, zo ja, neem dan aan dat het jpeg is.
Wat heeft je andere opmerking te maken met het probleem wat Dennis had?

Daarmee bedoel ik dat de extentie ofwel het mimetype pjpeg niet bestaat voor zover ik weet, en dat die ook niet in die lijst daar op die site voorkomt.

En daarbij probeer ik alleen maar te helpen als ik denk iets te weten.
Gewijzigd op 03/10/2013 03:29:37 door Niek Kasius
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.