Foto uploaden naar database
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.
krijg je een error?
ja een zelf gemaakte fout afhandeling:
Code (php)
1
2
3
2
3
type:
De extentie van uw plaatje is niet toegestaan om te uploaden als avatar!
Toegestane extenties zijn: .gif, .jpg, .png
De extentie van uw plaatje is niet toegestaan om te uploaden als avatar!
Toegestane extenties zijn: .gif, .jpg, .png
type: staat als
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)
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
euhm just curiousity denk ik maar welke extentie krijgen ze vanaf de camera?
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
IMG_0246.JPG
:-)
Ze zijn alleen +/- 2,5 to 3 mb groot
Gewijzigd op 30/03/2013 16:03:22 door Dennis WhoCares
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?
Kijk anders eens via de verkenner naar de detailgegevens van een 'goede' en 'foute' afbeelding.
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).
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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.
}
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.
.JPG is niet hetzelfde als .jpg
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.
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.
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:
Dat je in het script het hebt aangepast wil niet zeggen dat dit ook effect heeft.
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. ?
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
Standaard maximum upload instelling staat volgens mij op 2MB.
- 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 :
Werkt dit op dedicated servers?
Gewijzigd op 30/03/2013 16:27:57 door Dennis WhoCares
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
mijn lokale php.ini
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 :)
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
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?
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?
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