Tällä komennolla haettiin kuvasta tiedot,
$valittukuva = $_FILES["kuva"];
Mutta jos oikein muistan, niin tämä ei välttämättä anna kaikkea, esim kuvan päätettä. Olisiko tähän varmempaa konstia?
Kun valitsen kuvan ja katson sen tiedot print_r funktiolla, kuvan tyyppi on tyhjä. Miten tämä tulisi korjata.
<?php /******************************************************************************/ include_once('./yhteys/config.php'); session_start(); if(!$_SESSION['tunnistus_avain']){ header('location:./virhe.php'); } $sivunnimi = 'admin_h.php'; /******************************************************************************/ ?> <html> <head> <style type="text/css"> .ilmoitus{ background:white; padding:4px; border:1px solid black; } .nav{ width:100%; padding:1px; border-bottom:3px solid #66CC66; } a{ text-decoration:none; color:black; } .button{ border-left:2px solid rgb(0,102,0); border-top:1px solid rgb(0,102,0); border-right:1px solid rgb(0,102,0); border-bottom:2px solid rgb(0,102,0); background:green; color:white; } .button:hover{ border-left:1px solid rgb(0,102,0); border-top:2px solid rgb(0,102,0); border-right:2px solid rgb(0,102,0); border-bottom:1px solid rgb(0,102,0); background:green; color:yellow; } </style> <title>Tiedoston lataaminen palvelimelle</title> </head> <body> <table class="nav"> <tr> <td><a href="<?php echo $sivunnimi; ?>">Takaisin pääsivulle</a></td> </tr> </table> <br /> <?php if(!empty($_POST["lahetys"])){ LataakuvaPalvelimelle(); } function LataakuvaPalvelimelle(){ $kansionnimi = 'images'; // haetaan ladatun kuvan tiedot $valittukuva = $_FILES["kuva"]; echo '<pre>', print_r($valittukuva), '</pre>'; // Tarkistetaan onko kuvaa valittu if(empty($valittukuva)){ return; } // Tarkistetaan onko kuvan tyyppinä jpeg tai gif, jos on mennään eteenpäin if($valittukuva['type'] == "image/jpeg" || $valittukuva['type'] == "image/jpeg" || $valittukuva["type"] == "image/gif"){ // Tarkistetaan kuvan koko if($valittukuva['size'] >= 20000){ echo 'Kuvan koko on liian suuri'; return; } // merkki @ estää virheet siltä varalta, että hakemisto on jo olemassa. @mkdir("$kansionnimi"); $kuvahakemisto = "$kansionnimi/"; // Muutetaan nimi turvalliseksi $kuvannimi = rawurlencode($valittukuva["name"]); # Tarkistetaan onko tiedosto jo olemassa if (file_exists("$kuvahakemisto" . "$kuvannimi")) { echo "<p class='ilmoitus'>Samanniminen tiedosto on jo ladattu!</p>"; return; } /* Tarkistaa, onko parametrina annettu tiedosto kelvollinen www-lomakkeen kautta palvelimelle ladattu tiedosto.ja siirtää sen lisäksi tiedoston haluttuun paikkaan. */ if(move_uploaded_file($valittukuva["tmp_name"], $kuvahakemisto . $kuvannimi )) { $kuva = $kansionnimi.'/'.$valittukuva["name"]; $paikka = strpos($valittukuva["name"], "."); if($paikka !== false) { $katkaisu = substr($valittukuva["name"], 0, $paikka); } $k = sprintf("INSERT INTO kuvagalleria SET kuva='%s', nimi='%s', sijainti=%d", get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes(trim($kuva))) : mysql_real_escape_string($kuva), get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes(trim($katkaisu))) : mysql_real_escape_string($katkaisu), intval($_POST['sijainti']) ); if(!($t = mysql_query($k))){ return; } //header("location:kuvanlataaminenpalvelimelle.php"); echo '<p>Kuvan lataaminen on onnistunut</p>'; } else { echo "<p>Kuvan siirtäminen haluttuun kansioon on epäonnistunut</p>"; } } else{ echo "<p>Kuvan tunniste on väärä. Salitut muodot on jpeg, jpg sekä gif. Jos tyyppi on kuitenkin oikea, ei kuvan tyyppiä voitu tunnistaa.</p>"; } } ?> <form enctype="multipart/form-data" action="" method="post"> <table border="0" style="width:100%; border:1px solid black;" cellspacing="0"> <tr><td style="background:#66CC66;"> </td></tr> <tr> <td style="background:white;"> <input type="hidden" name="MAX_FILE_SIZE" value="20000"> <br /> Kuvatiedosto: <input type="file" name="kuva"> <select name="sijainti"> <option value="0"></option> <option value="1"> Etusivun valikkoon </option> </select> <input name="lahetys" type="submit"value="Lähetä"> <br /> <br /> </td> </tr> <tr><td style="background:#66CC66;"> </td></tr> </table> </form> </body> </html>
Yksi tapa olisi käyttää $_FILES['kuva']['type'], jonka jpg-kuville pitäisi olla muotoa image/jpeg. Tuosta sen voi joko parsia explodella, tai käyttää suoraan. Elikä siis
Mutta entäs jos arvo on tyhjä.
Siis tiedostoilla on aina mime tyyppi, joka löytyy tuosta type taulukosta. Minkälaisen tiedoston laitat mtkaan, jos $_FILES['kuva']['type'] = tyhjä?
Tiedoston ilmoitettua MIME-tyyppiä ei missään tapauksessa kannata käyttää. Toisin kuin Teuro sanoo, sen oikeellisuudesta tai olemassaolosta ei ole mitään takeita: selain ei välttämättä tiedä sitä (ja saattaa siksi lähettää jotain yleipätevää kuten "application/octet-stream"), ja hakkeri voi kirjoittaa siihen mitä tahansa. Jos luotat siihen tarkistusmenetelmänä, sivustosi on vaarassa kärsiä surkean kohtalon.
Tiedostopäätteen huono puoli taas on, että tiedosto ei silloinkaan välttämättä ole sitä, miltä näyttää. Toisaalta tämäkin on jo turvallisempi ratkaisu, koska yleensä palvelimet eivät suorita esimerkiksi .jpg-päätteisiä tiedostoja PHP-tulkilla, vaikka sisältö olisikin PHP-koodia.
Ainoa varma vaihtoehto on tarkistaa myös tiedoston sisältö. Esimerkiksi kuvatiedoston voisi yrittää avata GD:n imagecreatefromstring-funktiolla, tosin tämä on melko rajoittunut tiedostomuotojensa suhteen. On myös joitakin ohjelmia ja kirjastoja, jotka ovat erityisesti erikoistuneet tiedostotyypin arvaamiseen, mutta en tiedä näiden PHP-tuesta. Tämä tapa on joka tapauksessa raskaampi kuin muut mainitut, joten jos et halua panostaa kovasti, luota vain tiedostopäätteeseen.
Metabolix kirjoitti:
Ainoa varma vaihtoehto on tarkistaa tiedoston sisältö.
Vaikka tiedoston sisältökin varmistettaisiin formaatin mukaiseksi, on tiedostopääte silti syytä tarkistaa.
Tämä siitä syystä, että on mahdollista luoda täysin validi kuvatiedosto, joka sisältää (esimerkiksi JPEG-tiedoston kommenttikentässä) myös php-koodia. Mikäli päätettä ei tarkisteta, suorittaa PHP-tulkki kommenttikentässä olevan koodin php-päätteistä kuvatiedostoa kutsuttaessa. Ongelmaa vastaan voi taistella myös esimerkiksi konfiguroimalla palvelimen siten, ettei skriptejä voi suorittaa kuvakansiosta.
EDIT: Vasta_alkajan skriptissä on toinenkin ongelma. Ymmärtääkseni skriptin tarkoitus on uudelleenohjata käyttäjä muualle, mikäli istuntomuuttujaa tunnistus_avain ei ole asetettu. Nyt uudelleenohjauksen jälkeen kuitenkin tulostetaan alkuperäinen sivu selaimelle. Tämän seurauksena mahdollinen hyökkääjä voi asettaa ympäristönsä siten, ettei location-uudelleenohjausta noudateta, minkä seurauksena suojattuja sivuja on mahdollista käyttää kirjautumattomana.
Lisää header-rivin jälkeen exit-funktion kutsu ongelman korjaamiseksi. Näin käyttäjälle ei lähetetä alkuperäistä sivua lainkaan, vaan tehdään pelkkä uudelleenohjaus.
Periaatteessa tuolla .jpg tarkistuksella ei ole väliä, sillä jos käyttäjä on päässyt sinne asti niin homma on jo sillä selvä. Ovat voineet sotkea paljon muutakin :) Olisi vain mukava tuokin selvitellä miten se olisi järkevin tehdä.
$paikka = strpos($valittukuva["name"], "."); if($paikka !== false) { $katkaisu = substr($valittukuva["name"], 0, $paikka); }
Tällä tavallahan saan katkaistua sanan pisteen jälkeen, mutta miten saisin aloitettua sanan sen jälkeen.
esim.
kuva.jpg
Edellä mainittu antaa tuon kuvan, mutta haluaisin sen perästä tuon jpg arvon.
Tän pitäis toimia...
Vasta_alkaja:
<?php substr($valittukuva["name"], $paikka + 1);
TeNDoLLA:
TeNDoLLA kirjoitti:
Strict Standards: Only variables should be passed by reference in /tmp/koe.php on line 2
Niin siis onkos tuossa mun tavassa jotain häikkää?
On: end-funktion parametri on viittaus, ja siksi sille pitäisi antaa muuttuja eikä suoraan toisen funktion paluuarvoa. Sehän ei pelkästään palauta viimeistä arvoa vaan myös muuttaa PHP:n taulukkomuuttujan sisäistä tilaa. Koodi kyllä toimii, koska PHP katsoo kaikenlaista läpi sormien. Jos kuitenkin palvelimen asetuksissa on säädetty, että kaikenlaiset virheilmoitukset näytetään, siitä aiheutuu tuo ilmoitus. Jos parametrina olisi suoraan array-rivi (end(array("moi"))
), tuloksena olisi vastaava Fatal error.
Tässä on vielä yksi vaihtoehto:
Onko näillä mitään käytännön merkitystä, kumpaa käyttää.
<?php substr($valittukuva["name"], $paikka + 1);
Paitsi, että alempi ei ole riippuvainen pisteestä ja tunnistaa tyhjän päätteen
Vasta_alkaja kirjoitti:
Onko näillä mitään käytännön merkitystä, kumpaa käyttää.
--
Paitsi, että alempi ei ole riippuvainen pisteestä ja tunnistaa tyhjän päätteen.
Eipä muuta. Erillisen funktion käyttö on kuitenkin siksi suositeltavaa, että jokainen ymmärtää koodista, että extension($filename) palauttaa sen päätteen, kun taas substr($filename,strrpos($filename,'.')+1) vaatii tarkempaa lukemista eikä ole kovin selkeä. Lisäksi tyhjän tapauksen tunnistaminen oikein on aina hyvä ominaisuus; nythän skriptisi hyväksyisi esimerkiksi tiedoston nimeltä "Xjpg", vaikkei sen tiedostopääte olekaan jpg.
Kiitos Metabolix. Sinuun voi näköjään aina luottaa.
No niin. Näköjään olen siihen pisteeseen päässyt, että koodi menee eteenpäin aina seuraavaan kohtaan kohtaan asti.
if(move_uploaded_file($valittukuva["tmp_name"], $kuvahakemisto . $kuvannimi ))
Tämän jälkeen kuitenkin saadaan aikaiseksi virhe, koska $valittukuva["tmp_name"] on tyhjä. Kuinka tärkeää tämän arvon tarkistaminen on ja miten sen voisi tehdä muulla kuin $_FILES muuttujalla.
Siinä pitäisi kyllä aina olla arvo. Tarkista vielä, mitä tulostavat var_dump($_FILES) ja var_dump($valittukuva); voi olla, että koodissasi on jokin virhe.
var_dump($_FILES) array(5) { ["name"]=> string(15) "ahtari_ 011.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } var_dump($valittukuva) array(1) { ["kuva"]=> array(5) { ["name"]=> string(15) "ahtari_ 011.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } }
Tuli vain nyt mieleen, että vaikuttaako se, että rassailen tätä paikallisella koneella. Tulisiko tämän olla toimiakseen palvelimella.
Tuossahan se paljastuukin: error = 2. Manuaali kertoo seuraavaa:
lainaus:
UPLOAD_ERR_FORM_SIZE
- Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.
Koodissasi määrittelet maksimikooksi (MAX_FILE_SIZE) 20 kilotavua.
Tarkista aina tarjolla olevat virhekoodit.
Kiitoksia Metabolix, kiitoksia paljon.
nyt on kaikki muuten oikein, mutta jos kuvan nimessä on väli ei sen näyttäminen sivuilla onnistu. Miten tämä tulisi korjata. Vai onko minulla taas vain koodissa jokin pieni virhe.
Korvaa se välilyönti jollakin kelvolla merkillä. Osoiterivillä se on paha
koska monet selaimet, varsinkin pda:t eivät osaa välilyöntejä.
Korvaamiseen voit käyttää funktioita:
ereg_replace
preg_replace
str_replace
Siis mitä? Kyllähän kaikki selaimet osaavat välilyönnit. Välilyönti urlissa näyttää muuten seuraavalta: +
Eli äkkiseltään tulee mieleen, että jossain on jäänyt urlencode laittamatta.
Vielä on paljon opittavaa ja tuskin kaikkea koskaan tajuankaan, mutta. nyt en oikein ymmärtänyt tuota urlencodea.
1. Lataan kuvan palvelimelle, jonka nimi on esim.. kuva 1.jpg
Tuleeko tässä käyttää urlencodea.
2. Tallennan samalla osoitteen tietokantaan. esim. images/kuva 1.jpg
Tuleeko tässä käyttää urlencodea.
3. Haen MySql-kyselyllä kuvan tietokannasta.
Tuleeko tässä jo käyttää urlencodea.
Miten tämä tulisi tehdä niin, että se on järkevää ja oikeaoppisesti toteutettu?
1. Ei pidä.
2. Ei pidä.
3. Ei pidä. Vasta linkkiä muodostaessa pitää.
URL-enkoodaus on sitä varten, että osoitteen osaksi menevät tekstit eivät sisältäisi osoitteeseen sopimattomia merkkejä. Vain kirjaimet, numerot, piste, viiva ja alaviiva säilyvät, muut merkit muuttuvat enkoodattuun muotoon. Kysymysmerkillä ja &-merkillä on omat erikoiset merkityksensä; jos on tarkoitus antaa sivulle GET-parametrina A teksti 1?2&b=3, se täytyy URL-enkoodata, jottei sitä tulkittaisi väärin: 1%3Fa%26b%3D3, siis kokonaisuutena sivu.php?A=1%3Fa%26b%3D3.
Lisäksi pitää muistaa, että HTML:n seassa &-merkki aloittaa entiteetin (usein erikoismerkin, esim. tai ©), joten osoitteetkin pitää HTML-koodata ennen tulostamista.
Jokainen URLin osa pitää URL-enkoodata erikseen. (PHP:lle tuleva data taas dekoodautuu itsestään.) Kaikki sivulle tulostettavat asiat pitää HTML-enkoodata, ellei niiden ole erityisesti tarkoitus sisältää HTML-koodia. Yleisesti voidaan sanoa, että tekstinmuunnosfunktiot on parasta suorittaa viime hetkellä eli tässä tapauksessa juuri ennen tulostusta.
<?php # oma sivu.php?jokin parametri=terve, matti&tervehdys=miten menee? $s = rawurlencode("oma sivu.php"). "?". urlencode("jokin parametri"). "=". urlencode("terve, matti"). "&". urlencode("tervehdys"). "=". urlencode("miten menee?"); echo "<a href='", htmlspecialchars($s), "'>linkki</a>\n";
Näin minä sen oletinkin olevan, siksi hieman ihmettelinkin Grez:sin lähettämää vastausta ongelmaani. Oletettavasti minut oli ymmärretty väärin. Ongelmani onkin seuraava.
Tallennan palvelimell kuvan nimeltä : lapseni ensimmäinen syntymäpäivä.jpg
Tallennan kuvan osoiteen tietokantaan : images\lapseni ensimmäinen syntymäpäivä.jpg
Haen kuvan osoitteen tietokannasta ja yritän esittää sen ruudulla.
Tämä kuva ei näy, mutta jos korvaan tyhjät merkit esim alaviivalla ongelma poistuu.
Kysymys kuuluukin. Saanko kuvat näkymään näin, vai tuleeko minun kuvaa tallentaessa korvata tyhjät välit esim alaviivalla.
Miksi tallennat kantaan tuon images-osan?
Kokeilepa osoitteen enkoodausta rawurlencode-funktiolla. Sivun lähdekoodiin pitäisi tulla tällainen img-tagi:
<img src="images/valilyonti%20nimessa.jpg" alt="hassu kuva" />
$k = "SELECT kuva FROM kanta WHERE id = 1"; if(!$t = mysql_query($k)) return; $r = mysql_fetch_assoc($t); $kuva = rawurlencode($r["kuva"]); if(empty($_REQUEST["kuva_".$sijainti])){ if(empty($_REQUEST["kuva_".$sijainti])){ if($kuva != 'ei'){ echo "<br /><br /><img src='$kuva' width='150'>"; } } } else { echo '<br /><br /><img src="'.rawurlencode($_REQUEST["kuva_".$sijainti]).'" width="150px;">'; }
Page source : images%2Fahtari_%20018.jpg
Lopputulos : mikään kuva ei näy
Kysyinkin jo, miksi laitat tuon images-osan kantaan. Kauttaviivaa, joka erottaa hakemistot toisistaan, ei pidä enkoodata, kuten voit todeta korvaamalla tämän sivun osoitteesta /-merkin %2F:llä.
Ikävä tuottaa pettymys, mutta otin pois imagen eikä tominut. Taidan miettiä asiaa huomenna virkeänä uudelleen. Tuossa lataan kuvan palvelimelle. Näin äkkiseltään en siinä huomaa mitään, mutta jos satutte huomaamaan niin sekin olisi helpotus.
@mkdir("$kansionnimi"); $kuvahakemisto = "$kansionnimi/"; $kuvannimi = rawurlencode($valittukuva["name"]); # Tarkistetaan onko tiedosto jo olemassa if (file_exists("$kuvahakemisto" . "$kuvannimi")) { echo "<p class='ilmoitus'>Samanniminen tiedosto on jo ladattu!</p>"; return; }
Kansiossa oleva kuva :
Hemmin%20ensimm%E4inen%20is%E4np%E4iv%E4%20001
Lähdekoodi :
images/Hemmin%20ensimm%E4inen%20is%E4np%E4iv%E4
Aika erikoista, ettei mikään toimi.
Oletko varma, että ongelma on väleissä eikä ääkkösissä? Ne ovat nimittäin paljon yleisempi ongelmanlähde.
Näkyykö selaimella images-hakemiston listaus? Siitä näkisit ainakin toimivan linkin ja voisit testata, näkyykö kuva suoralla osoitteella.
Oma ratkaisuni olisi joka tapauksessa kieltää nimistä muut merkit kuin 0-9A-Za-z_-, vaikka sitten tietokantaan tallentaisi sen alkuperäisen nimen.
Hei Metabolix,
Tuo kieltäminenkin kyllä olisi varmaan hyvä ratkaisu, mutta sainkun sainkin tämän toimimaan. Kiitos sinun. Olit jälleen kerran oikeassa, mutta minäpäs olinkin reippaana unohtanut yhden oleellisen funktion ja jätin sen enkoodaamatta. Nyt kuitenkin toimii. kiitos.
Toimimaan, no miten sen nyt ottaa. Okei se toimi, mutta oli se nopeampi ja helpompi vain kieltää välit ja ääkköset. Tai no ei kieltää vaan muuttaa jos tarkkoja ollaan.
Kuitenkin, juuri voiton tunteen saatuani avaan IE explorerin ja valitettavasti käytän sitä nytkin huomaan todella kumman vian. Ei lataa kuvaa, ei. Ei muuta kuin var_dump:pi käyttöön ja tutkimaan.
array(1) { ["kuva"]=> array(5) { ["name"]=> string(14) "helmi_ 030.jpg" ["type"]=> string(11) "image/pjpeg" ["tmp_name"]=> string(21) "C:\wamp\tmp\php90.tmp" ["error"]=> int(0) ["size"]=> int(190611) } }
Ja sieltähän se löytyy. Mikä ihmeen p kijain on aina tuossa image/p ja sitten pääte?
<?php $valittukuva = ''; $valittukuva = $_FILES["kuva"]; if(!empty($_POST["lahetys"])){ LataakuvaPalvelimelle($valittukuva); } function extension($f) { $info = pathinfo($f); $e = &$info["extension"]; return $e; } var_dump($_FILES); function LataakuvaPalvelimelle($valittukuva){ $kansionnimi = 'images'; // haetaan ladatun kuvan tiedot //var_dump($valittukuva); // Tarkistetaan onko kuvaa valittu if(empty($valittukuva)){ return; } if(empty($valittukuva["type"])){ $valittukuva["type"] = 'image/'.extension($valittukuva["name"]); } // Tarkistetaan onko kuvan tyyppinä jpeg tai gif, jos on mennään eteenpäin if($valittukuva["type"] == 'image/jpg' || $valittukuva["type"] == 'image/jpeg' || $valittukuva["type"] == 'image/gif' || $valittukuva["type"] == 'image/jfif'){ // merkki @ estää virheet siltä varalta, että hakemisto on jo olemassa. @mkdir("$kansionnimi"); $kuvahakemisto = "$kansionnimi/"; // Muutetaan nimi turvallisemmaksi $korvattavat = array("ä", "ö", "å", " "); $kuvannimi = str_ireplace($korvattavat, "", "$valittukuva[name]"); # Tarkistetaan onko tiedosto jo olemassa if (file_exists("$kuvahakemisto" . "$kuvannimi")) { echo "<p class='ilmoitus'>Samanniminen tiedosto on jo ladattu!</p>"; return; } /* Tarkistaa, onko parametrina annettu tiedosto kelvollinen www-lomakkeen kautta palvelimelle ladattu tiedosto ja siirtää sen lisäksi tiedoston haluttuun paikkaan. */ if($file["error"] != 0 && $valittukuva["size"] <= 0){ echo 'Virhe kuvan latauksessa.'; return; } if(move_uploaded_file($valittukuva["tmp_name"], $kuvahakemisto . $kuvannimi)){ //$kuva = $kansionnimi.'/'.$valittukuva["name"]; $kuva = $kansionnimi.'/'.$kuvannimi; $paikka = strpos($valittukuva["name"], "."); if($paikka !== false) { $katkaisu = substr($valittukuva["name"], 0, $paikka); } $k = sprintf("INSERT INTO kuvagalleria SET kuva='%s', nimi='%s', sijainti=%d", get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes(trim($kuva))) : mysql_real_escape_string(trim($kuva)), get_magic_quotes_gpc() ? mysql_real_escape_string(stripslashes(trim($katkaisu))) : mysql_real_escape_string(trim($katkaisu)), intval($_POST['sijainti']) ); if(!($t = mysql_query($k))){ echo mysql_error(); return; } //header("location:kuvanlataaminenpalvelimelle.php"); echo '<p>Kuvan lataaminen on onnistunut</p>'; } else { echo "<p>Kuvan siirtäminen haluttuun kansioon on epäonnistunut</p>"; } } else{ echo "<p>Kuvan tunniste on väärä. Salitut muodot on jpeg, jpg sekä gif. Jos tyyppi on kuitenkin oikea, ei kuvan tyyppiä voitu tunnistaa.</p>"; } } ?>
Progressive JPEG, IE on erilainen nuor--- selain.
Eli kannattaako ne vain käytännössä laittaa sallittujen listalle?
Ei tuota p(rogressive)-etuliitettä taida nähdä muualla kuin jpegin yhteydessä. Getimagesize
-funkkarillahan saisit selville, onko kyseessä oikeasti kuva (tosin en mene takaamaan toimintaa JFIF-formaatin kanssa).
Ps. Muuttujia ei tarvitse erikseen ympäröidä lainausmerkeillä.
Kiitoksia. Lisäänpä nuo muodot sitten huoletta listaan.
tsuriga kirjoitti:
Getimagesize
-funkkarillahan saisit selville, onko kyseessä oikeasti kuva (tosin en mene takaamaan toimintaa JFIF-formaatin kanssa).
Käytännössä JFIF toimii varmasti, sillä käytännössä kaikki .jpg tai .jpeg -päätteiset tiedostot mitä vastaan tulee on JFIF formaatissa. JPEG-standardissa on JFIFin yleistymisen jälkeen määritelty SPIFF-formaatti, mutta se ei ole kovin yleisesti käytössä. Toisaalta SPIFF on pyritty tekemään alaspäin yhteensopivaksi JFIFin kanssa, joten todennäköisesti Getimagesize hanskaa myös SPIFF-muotoiset tiedostot.
Vasta_alkaja kirjoitti:
Lisäänpä nuo muodot sitten huoletta listaan.
Tarkoitit kai muodon?;) Edelleen siis mutu-pohjalla, mutta listaan tarvinnee lisätä vain "pjpeg". IE näköjään heittää sen MIME-tyypiksi huolimatta siitä, onko kuva oikeasti tallennettu Progressive- vai Baseline-muotoon.
Joo. Tarkoitin muodon :) Niin näyttää IE tekevän tuon kohdalla. Se toi suurta hämmennystä kun en tuommoisesta asiasta edes perillä ollut. Mutta onneksi apua on nopeaa ja lähellä kun sitä tarvitsee.
Kiitoksia todella paljon kaikille keskusteluun osallistuneille ja jospa minustakin joskus olisi teille apua. Helppo luvata kun siihen ei pysty :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.