Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: kuva ladattavaksi sivuille

Sivun loppuun

dartvaneri [20.06.2011 00:53:05]

#

Hei!
Onko mahdollista saada kuvaa sivulle sillai, että sen pystyisi käyttäjä lataamaan sieltä, ilman, että sitä joutuisi pakkaamaan?

-tossu- [20.06.2011 01:15:12]

#

On mahdollista. Joko upotat kuvan sivulle img-tagilla tai linkität siihen a-tagilla. Molemmissa tapauksissa käyttäjä pystyy lataamaan kuvan helposti omalle koneelle.

Olli [20.06.2011 10:56:49]

#

Käyttäjälle on kaikista helpoin tällainen.

sivu.php

Lataa tiedosto tästä: <a href="lataa.php">Lataa</a>

lataa.php

<?php
$file = 'monkey.gif'; // tuohon laitat siis sen tiedoston nimen

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

PHP-koodi on täältä: https://www.php.net/manual/en/function.readfile.php

Metabolix [20.06.2011 11:57:28]

#

Jos tarkoitat GD-funktioilla luotua kuvaa, voit tulostaa sen skriptistä näin:

<?php
$img = imagecreatetruecolor(64, 64);
header("Content-Type: image/png");
imagepng($img);

Sivulle tulee siis img-tagi, jossa on osoitteena kuvaskripti:

<img src="kuvaskripti.php" alt="" title="PHP-kuva" />

dartvaneri [20.06.2011 13:14:51]

#

Kiitos vastauksista, tämä ollin koodi kuulosti oikeailta, mutta en saanut sitä lataamaan tiedostoa.

<?php
$file = $_GET['kuva']; // tuohon laitat siis sen tiedoston nimen
echo $file; //tämä kyllä löytää sen oikean tiedoston, testiksi echotin sen.
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

ja sitten se linkki on tällainen:
Lataa tiedosto tästä: <a href=\"index.php?sivu=lataa&kuva=$kuva\">Lataa</a>


Mikähän mahtais olla vikana?

Petja [20.06.2011 13:22:10]

#

Tarkista, että koodit ovat oikeissa tiedostoissa (sivu.php, lataa.php jne.), sitten.

Rivillä 17 laita }-merkin jälkeen seuraavanlainen koodi:

else{die("Tiedostoa ei löydy!");}

Mikäli skripti palauttaa Tiedostoa ei löydy, katso että kuva on varmasti oikeassa paikassa.

Sen lisäksi linkin pitäisi olla:

<a href=\"lataa.php?file=$kuva">Lataa tiedosto!</a>

eikä

<a href=\"index.php?sivu=lataa&file=$kuva">Lataa tiedosto!</a>

The Alchemist [20.06.2011 13:24:03]

#

Sinä et voi tulostella mitään roskaa samassa skriptissä, pelkästään syöttää tiedoston datan. Mietihän hetki. Lisäksi tuon viritelmäsi tietoturva on täysi nolla, koska nyt tarjoilet minkä tahansa tiedoston saataville.

dartvaneri [20.06.2011 13:25:53]

#

Joo polku näköjään unohtui merkitä.. mutta nyt tuleeki sitten tällainen teksti sivulle, kun laittaa lataa linkkiä:

‰PNG � IHDR@@��ªiqÞ�sRGB®Î�é�bKGDÿÿÿ ½§“ pHYs�Ã�Ã�Ço¨d�tIME�Ú������4ί ·IDATxÚí[Ko�ÕÖ]§ÞÕ/wÛ8¶‰‡"&A8R&(ò€�B�1aðý�þA~	s#Á�1‡I$$äÄCD �%Jd›6írwu×»ºÎ7¸¬}O;ä&v’ûÁ‡[jÅêGõ9kï½ÖÚûTöÖ�ÿ䇅�øã�€sÎ�8�à�€sÎ�8�à�€�êÃyU�ÞÙÙYh2îÞ½«þŠ¨—Ñ�™›õ<�Žã`>Ÿcee�0��åõ~¿;wî¨ÿ7póß|ó .]ºäíím(¥ày�‚ €ã8Ȳ�Y–¡®käyŽÑhä��� Š"õ·�€›_^^†Ö�ý~�½^�J)(¥à8�lÛF–e(Ë�–e!MSÌf3Ìf3dYö�^�/�Àææ&:�š¦ÁÒÒ�|߇ïûÿºø�@Ìçs�E�­5š¦‘,8<<ÄÊÊ >ûì3õ·#AFß²,ôû}‰¶çyO|Ö¶m´Z-@Ó4°m�iš"MSìïïãÊ•+úáÇêo�À[o½…ñx,�ô}�–õoUÕZƒÙÅL `a�¢Ýnckk�ZkŒF#|øá‡úΝ;Š@�Àññ1>øà�$‰¼V��꺆ëºhµZ�Ãð…Êè…|@¿ß‡Ö�óù�u]c>ŸËÆ›¦AÓ4ò^Ó4�€ôz=�A€µµ5\½z�ív{áûI’`wwW���À¶m)º®Q×5²,Ãt:E�EOHî��€��ü��†!ʲDš¦�@ðI�ªª’ *¥àû>.\¸ Yqttä¦izZk�E»wïâÓO?E§ÓA�†�‚¾ïÃó��/däò<‡ã8(Ë�¾ï£®kض-µÎÍ2ª&á6M#¾áðð�–e!Š¢Ø÷}ìïïcwwWgY†ÕÕUh­á8�<ÏC]×HÓ��ªª*¸®‹¢(Ð4 vvvôiJâÌöe‰Ùl†v»¦i ö‚ëºRïæÆ	FUU°,�–eA)…Ñhä²,Q–%â8Æîî.nݺ…/¾ø�÷îÝC¿ß‡ïûPJÁ¶m(¥$ lÛ^¸N]×PJa:Âó¼Spf�ÜÞÞÖ����Ã�N�A� Óé,,Ž)�`¡$öR°,�£Ñ�GGG888Àp8Džçð}�ý~�+++’ú&J)�E$I$ãâ8Æññ1š¦Áòò2à‡�~P¯¼�¢(B���‚@j2§ö’Èóß²,E5â8Æd2Át:E]×ÐZ#��ôz=´Z-ض-×1ÿ¶,Kʁ&Ë÷}TU…4M1�áû>¶··õó€pf<ÏÃl6�V6ÕÀq�� ª*ÏðïápˆÙl&eÁÍ1ƒLéäßì'öR�‚u]ò,äyŽn·�˲Är§iúj9 ��ŒÇcIuJSY–"[LQ×u‘ç9´Ö˜L&�Ç’�¶m˦¨�eY.d•Iœív[ú�³4^{í5ض ­5Ò4EQ�xã7ô¯¿þª^:ï¾û®ÖZ/DÎ\<	p>ŸÃ÷}±Âãñ�“É�yž#�C±Ì¦DÒD�E!îr>ŸËoåy.¼à8Žö�ɲ,KQä²,Ÿ ‚sÖè'I�ÏóD‚Ø�WU%Ñ$C×u$I�Çñ��0b¦d2c´Öò]ÇqDQæó9’$ëºò:t»]Q	­5â8�ù|©Fhoo�iš¢ª*xž�˲0™Le�ªªBUU¨ë�eYb>Ÿ#Žc���a4�I�ÈžÁT�˲D�͈›*U×µL"dÛmÛ6ÖÖÖÐï÷���Z­�,ËB]׸~ýº~i�ðøñcL§STU%µËÅ1ò¬ý¢(0™LD²øð}_<� �³…š‘3 –›'@��3ðÂ…�H’Dd7MSɺ—�Àææ¦D‰ ©û䀢(d�BË̍†a(éÏçÓ˜Ÿ¥@°XfEQ<1w�‚Zk���YcUUÈóü©²x&Xó–e¡ÝnÃó<äaˆ¢(Ä��yn˜|aF¦ˆDjv“&ó3³HˆÜ�_çu]×E§ÓA¯×�‰æ{öã—Ò�1ú½^�ƒÁý~_úý²,‘$‰0±ïûhµZèt:ð}�A�È¢Ì�·,k!#L�•ç9’$Aš¦ò:Ë…YÇŒ£Ga™™ ýY³ôÌ�0�“e�‚ šó}_R϶mTU%õ®µ– ·Z-¸®+’ÅšfJ›éÎ6š@ÔuÉd²PB½^Ox‡žƒegf�ÛjÛ¶Ÿ:7pž'ÚF_�îííe—/_–ˆ8Žƒ �ðûï¿ãáÇbP|ßG�†âç)Y'7ÍôlšF���žÄWU•È$?ﺮð�ÿ¥DFQ$ªÄߦç8u	°çþ#ªYQ�ø裏db�q�c���q�£i�¸®‹0�ÑjµÐn·¥?Ù-šö—ÚÏöÎó�“ÉD®™¦)¦Ó)f³�Æã1¢(BY–�¥@ÖŸL&(ŠBˆÒuݧ�ðÌ�Èó<Ìó<�‚ ÔZg¾ïc}}] ��}||Œ(Š°¿¿<Ï1ŸÏ¥+ìõz2Ì0Ça¦¶›3È�I’Àq�É�¥�f³�Š¢@š¦XYYïû�ø`0�¦Ó©Ì XrOkŸ™�ý~?ûÃçgœì®®®ââÅ‹Ÿ*¥ðÛo¿a:Ê‚ @·ÛE¯×[@ž’u�ŽÌØ�P X�4Mt�UUa<�K�]×5¦Ó)†Ã!îß¿8Ž‘ç9àòåËøþûïÏn…oÞ¼©¯\¹‚?þXmllÈÄgccã�èñx,©æû>ÚíöBí—e)fçä¦Íögô©é¯¿þº08ŸìüÈ�,«$I䩵ƥK—ÔÛo¿÷Þ{�×®];{7xãÆ í8�êºÆ'Ÿ|¢ß�ÿ}\¿~]Ñòæy.�â\€rWU�f³™0¹9�# MÓ I�Ìf3aw×u±¾¾ŽV«%�烤–$‰d�»Æ¦iày�nÞ¼©Þyç�ܺu��Øœ	€�Ýétdt­ö—_~‰¯¿þZ‡aˆ��� MSñóŽã ×ë¡i�L&�IY×u…åù9ŽÇ����E‘�˜¥¥%!M~n>ŸÃq�¹�åµ,KL&�Ôun·+flee�+++ÒžÓz?­)ú�°µµ�âöÒ4Å£Gdáft\×�Ù¤ÜqÁ–eIý²5Ž¢�ÇÇÇp]�ý~�ý~_ã†YnÝnW�i:.Ì�ØXu»]4MƒŸ�þY�E¡È%[[[Èó�·oß~~LÇDëJ2[^^†ã8�ÃP†š\Ìl6�Ý=y2D­.Š�q�ËÄÆó9†b¯ÍÚ揙³�öüÌ�Žª8 ãµM¶'(­VKØß�%Š"DQ$k3Goa�J�@�GR=³ ‰I2KKKb-©ïq�#Š"Äq,Ú˨s4FÓÂ��ӝ¥i*ö6��9d Ã�UU!Ë2)+š�f��3×uE��ÆÞF‡ùܐaÛí¶07‰äs¹n·+›2#A³b��{}sbDâ�ÃP̐mÛòš9a2ÕÚí6Úí6ʲöR+Ë�®ë>q"ō›\õL¶··õææ¦|É�E™ädÎûH‚ƒÁ®ëb4�a2™��š‡�Ü�OŒ9ÍekÍÖ™ó¿“£uþ�Çàæ@Å�Íó5øî»ïÔ™Gbf{ʨšŒÎ�³^é�™=lš�¢©��‚‡+­Vë‰SenÜŒ¬9K,ËRÖ`ô,ò�ÍÜ©`TY¿f'F'ÇL`WÆQ�G_fï_�ÅBßÏ9�7irF�E²iSMÌ£¶,ËäT9n7›"sÈÊFì¹K Ïs<~ü�ƒÁ@\�ký$¹¤è�™²t…ìÕ�=Ê)Áá&Í;IÖÖÖ�|nˆŒo�@(½�`0#�@·Û= öe)LNÖ·,KH°Ýn?Á°Ü ÏõÈöŒGc½^O��'6,�³cÔZËɳÙ?Ð�‡aˆ¦i$åi©y Âïq`óŸ�J?›ÁÍçsdY†8Ž…ð(Q'³€�¤? ´±VMÇÆ9�¿ÃRâûæ! ³‘¥#5kÌ�\×Eš¦H’dáL€¿ËL³�$'œöÂŒ�5Ý®]»¦Ÿ—K<Ïý{÷^ÉÍÔêŸþßçÿ�ûL õ��ޝIEND®B`‚

Edit. ei näytä juurikaan selvemmältä

Petja [20.06.2011 13:29:58]

#

Lue aiemmat viestit, ongelma saattaa ratketa.

The Alchemist kirjoitti:

Sinä et voi tulostella mitään roskaa samassa skriptissä, pelkästään syöttää tiedoston datan.

dartvaneri [20.06.2011 13:33:29]

#

Petja kirjoitti:

Sen lisäksi linkin pitäisi olla:

<a href=\"lataa.php?file=$kuva">Lataa tiedosto!</a>

eikä

<a href=\"index.php?sivu=lataa&file=$kuva">Lataa tiedosto!</a>

Jahas, toi auttoi, mutta miksi se ei onnistu tuolla mun systeemillä? :)

Petja [20.06.2011 13:36:05]

#

Olethan ottanut tuon echon jo pois? Se on mahdollinen syypää.

Sen lisäksi tietoturvaa voisi parantaa:

//index.php
$salasana="omena"; //Keksi tähän jokin salasana
$hashed=md5($salasana.$file);
print "<a href=\"lataa.php?file={$file}&hash={$hashed}\">Lataa</a>";

//lataa.php
$hash=$_GET['hash'];
$file=$_GET['file'];
$salasana="omena"; //Sama salasana kuin edellisellä sivulla
if(md5($salasana.$file)==$hash) {
//Itse latauskoodi tähän
}else{die "<strong>Tietomurtoyritys!</strong> Tiiviste ei vastaa tiedoston nimeä.";}

Sovella koodi omaan käyttöösi.
Vaihda koodissa oleva salasana joksikin muuksi, äläkä anna sitä kenellekään!

P.S. Koodia en ole testannut, enkä voi taata sen toimivuudesta. ;)

dartvaneri [20.06.2011 13:47:47]

#

Kiitos vinkistä :) nyt se onnistuu. Tietoturvaahan ei oo koskaan liikaa :) mutta en tiedä sitten ehän tosta mitään haittaa oo, vaikka sivulle pitää kirjautua sisään :)

Petja [20.06.2011 13:50:44]

#

Tuossa koodissa ei tarvitse mitenkään kirjautua. Keksit vaan jonkun sanan ja laitat ne niille varatuille paikoille. That's it!

Sinulta ei kysytä salasanaa missään vaiheessa, millään tavalla, mikäli koodiani käytät.

-tossu- [20.06.2011 14:28:06]

#

Petja: Helpompi tapa olisi tarkistaa ladattavan tiedoston polku vaikka funktion realpath avulla, eikä tehdä hash-virityksiä, jotka ovat kaiken lisäksi helpompia murtaa.

Lebe80 [20.06.2011 14:42:20]

#

Petja: ja esimerkkeihin "omena" -sanan tilalle kuuluisi laittaa
$salasana = "2hUT=a@a+raN";

Vaikka kerrotkin tuolla, että käyttäjän kuuluu itse keksiä "jokin salasana", niin esimerkkinä olisi hyvä heittää jokin tuommoinen vaadittavan vahvuinen salasana tilalle.

edit:
Myöskin turhat "Tietomurtoyritys!"-tasoiset viestit kannattaa suosiolla unohtaa. Pelkkä ilmoitus väärästä tiivisteestä riittää tai vastaavasti 404 Not found -ilmoitus.

Olisi hauska nähdä jonkun peruskäyttäjän ilme, joka avaisi vanhentuneen linkin ja eteen tulisikin "Tietomurtoyritys!" -viesti...

Petja [20.06.2011 14:56:26]

#

-tossu- ja Lebe80, olette ihan oikeassa.
Tein tuon vaan aikani kuluksi, enkä nyt ajatellut jokaista yksityiskohtaa.

Huomasin myös itse, että ei tuo mitään suojaa, elleit index.php:ssä tarkisteta, kuuluuko tiedosto "sallittujen listalle". Sillä jos lataussivu on muotoa index.php?sivu=download&file=rand.om, voi kuka tahansa vaihtaa urlia file=examp.le, file=jo.ku, file=pakattu.zip jne.

Joten jos tältä haluaisi välttyä, tulisi laittaa tietokantaan lista sallittavista tiedostoista ja antaa kullekin ID, jolloin lataus tapahtuisi tämän ID:n avulla.

Ette tietenkään ymmärtäneet mitä tarkoitin, mutta väliäkö tuolla...

dartvaneri [20.06.2011 15:25:11]

#

Onko tämä ihan väärin muodostettu tosta realpathista?

<?php
$path = "/home/******/kotisivut/kuvat/kuva.png";
$polku = realpath('kuvat/kuva.png');
if($polku == $path){
echo "kelpaa";
}
else{
echo "ei kelpaa";
}
?>

onko mitenkään mahdollista saada laitettua tietokanta kyselyä tuonne tähän tapaa:

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);

 	­­$kysely = $yhteys->prepare("INSERT INTO lataukset (tiedosto) VALUES (?)");
	$kysely->execute(array($file1));

    exit;
}

, koska haluan vähän lataustilastoja.

-tossu- [20.06.2011 15:44:59]

#

dartvaneri kirjoitti:

Onko tämä ihan väärin muodostettu tosta realpathista?

Ei, mutta tuossa koodissa testistä ei ole mitään hyötyä.

dartvaneri kirjoitti:

onko mitenkään mahdollista saada laitettua tietokanta kyselyä tuonne tähän tapaa:

On mahdollista. Koodisi näyttää jopa ihan toimivalta, kunhan siihen lisää tietokantaan yhdistämisen ja muuttaa $file1-muuttujan $file:ksi .

dartvaneri [20.06.2011 15:56:40]

#

Miten se pitäisi tehdä että siitä olisi hyötyä?

Koodin yläosa:

<?php
include('yhteys.php');
$file1 = $_GET['kuva'];
$file = "kuva/$file1";

että kyllä yhteys on muodostettu, ja toi $file1 on sen kuvan nimi ja $file on se polku missä se kuva on. Mutta selain näyttää palvelin virhettä.

-tossu- [20.06.2011 16:02:49]

#

Jos haluat, että vain /home/******/kotisivut/kuvat-kansiossa olevia tiedostoja voi ladata, tarkista, että realpathin palauttaman polun alku on em. Polun alun saat vaikka substr-funktiolla.

Mitä jos vaikka laittaisit sen virheilmoituksen tänne putkaan.

dartvaneri [20.06.2011 16:08:45]

#

Niijoo, tuolla tavallahan se onnistuu :) ja sitten vielä tiedosto päätteen tarkistaa.
ei tule muuta kuin

HTTP-virhe 500 (Internal Server Error): Palvelin kohtasi odottamattoman tilan yrittäessään toteuttaa pyyntöä.

eli se ilmoittaa jostai syntaksi virheestä..

Yucca [20.06.2011 16:36:33]

#

dartvaneri kirjoitti:

Onko mahdollista saada kuvaa sivulle sillai, että sen pystyisi käyttäjä lataamaan sieltä, ilman, että sitä joutuisi pakkaamaan?

Kaikista asioista voi tietysti tehdä ison ongelman, mutta normaalisti riittää, että sivulla on kuva, joka on upotettu siihen img-elementillä. Ne, jotka eivät osaa klikata hiiren oikealla painikkeella ja valita öTallenna kuva nimelläö, eivät luultavasti kuitenkaan tekisi kuvalla mitään.

Jos taas kuva on hyvin iso, niin yksinkertainen linkki on todennäköisesti huomattava parannus kaikkiin hienosteluihin verrattuna:

<a href="kuva.jpg">Kuva napanöyhdästäni</a> (4000×3000 pikseliä, 5 megatavua)

(Tuohon voi tietysti haluttaessa lisätä sellaisen hardcore-jutun kuin esimerkiksi 40×30 pikselin esikatselukuvan.)

dartvaneri [20.06.2011 16:47:37]

#

Mutta kun sivulle tulee paljon kuvia, juuri lataus tarkoitukseen, niin mielestäni olisi hyvä jos on linkki että lataa tästä. Kuvien koot on sitten sielä 9 mt luokkaa (järkkärillä otettuja kuvia)

Kokonaisuudessaan se lataa.php:n koodi on tällähetkellä tallainen:

<?php
include('yhteys.php');
$file1 = $_GET['kuva'];
$file = "kuva/$file1";



if (file_exists($file)) {


    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);

­    $kysely = $yhteys->prepare("INSERT INTO lataukset (tiedosto) VALUES (?)");
    $kysely->execute(array($file1));
    exit;
}
else{
print("Tiedostoa ei löydy!");
}




?>

mutta aina vaan heittää palvelin virhe 500:sta.
Mutta ilman tota kyselyä se toimii. Mikä tossa mahtaa olla vikana?

Petja [20.06.2011 17:17:33]

#

Hmm... Virhe saattaa johtua, että olet yhdistänyt väärin, mutta silloin yleensä pitäisi PHP:n herjata. Koska nyt palvelin tuon sanoo, asiaa onkin hankalampi ratkaista. Laitapa se koodi, jolla yhdistät tietokantaan. Salasanat ja tunnukset voit piilottaa.

Ja näin yleisenä vinkkinä asiasta poiketen kannattaa käyttää

$file = "kuva/".$file1;

tai

$file = "kuva/{$file1}";

sen sijasta, että

$file = "kuva/$file1";

Tulet varmasti myöhemmin huomaamaan, miksi.

Yucca [20.06.2011 19:35:12]

#

dartvaneri kirjoitti:

Mutta kun sivulle tulee paljon kuvia, juuri lataus tarkoitukseen, niin mielestäni olisi hyvä jos on linkki että lataa tästä.

Linkin nimenä öLataa tästäö on... heikko.

Jos on paljon kuvia, niin sitten ymmärrän, että halutaan generoida linkit automaattisesti, mutta kerropa, miksi pitäisi generoida muuta kuin normaaleja linkkejä
.

Miksi kuva pitäisi tarjota määrittelemättömänä binaaridatana (application/octet-stream) eikä kuvadatana? Onko tarkoitus yrittää estää hakukoneita käsittelemästä kuvia kuvina vai yrittää estää se, että käyttäjä avaa linkin suoraan kuvankäsittelyohjelmaan?

Entä miksi haluat ehdottomasti saada aikaan sen, että jos yksi käyttäjä on juuri ladannut kuvan, niin toinen ei missään tapauksessa saa kuvaa saman palveluntarjoajan cachesta, kun yrittää viisi sekuntia myöhemmin? Siis haluat ehdottomasti tahmata palvelintasi ja sen tietoliikenneyhteyttä, jos kuvasi sattuisivat saamaan suosiota. Sitähän nuo cache-yritelmät lähinnä merkitsevät.

The Alchemist [20.06.2011 19:57:36]

#

Minua ainakin ärsyttää suunnattomasti ne huonosti suunnitellut sivut, jotka syöttävät kuvat sekalaisena binäärimössönä kuvan sijaan. Usein kyse on tosin väärin konfiguroidusta palvelimesta eikä tarkoituksellisesta toiminnasta. Minä en halua latailla kuvia koneelleni vaan esikatsella niitä selaimessa. Jos jokin kuva on niin hyvä, että haluan sen erikseen tallentaa, niin sitten teen sen ihan itse.

dartvaneri [21.06.2011 00:27:40]

#

<?php
try {
    $yhteys = new PDO("mysql:host=localhost;dbname=****", "****", "****");

} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

Mutta ottaen huomioon sen asian, että moni tavallinen tallaaja, joka osaa käyttää koneella vain nettiä, haluaa sen kuvan, ei sitä välttämättä osaa kopioda, vaan saa kuvan ainoastaan lataamalla.

-tossu- [21.06.2011 00:37:10]

#

dartvaneri kirjoitti:

Mutta ottaen huomioon sen asian, että moni tavallinen tallaaja, joka osaa käyttää koneella vain nettiä, haluaa sen kuvan, ei sitä välttämättä osaa kopioda, vaan saa kuvan ainoastaan lataamalla.

Jos suuri osa sivun kävijöistä on peruskäyttäjiä, voi esim. linkin tai kuvan viereen kirjoittaa ohjetekstin tyyliin "Tallenna kuva painamalla oikealla korvalla ja valitsemalla 'Talenna nimellä'". Kuvan tallennuksen pakottaminen header-kikkailulla kuitenkin ärsyttää monia.

dartvaneri [21.06.2011 01:16:02]

#

Onko kuvan laadussa sitten mitään eroa, jos sen kopio tai lataa? Kuvan laatu nimittäin on tärkeää, sillä ei ne kuva todellakaan ole mitään pokkari kuvia, vaan ihan ammattitason kameralla kuvattuja.

-tossu- [21.06.2011 01:23:44]

#

dartvaneri kirjoitti:

Onko kuvan laadussa sitten mitään eroa, jos sen kopio tai lataa? Kuvan laatu nimittäin on tärkeää, sillä ei ne kuva todellakaan ole mitään pokkari kuvia, vaan ihan ammattitason kameralla kuvattuja.

Riippuu siitä, mitä tarkoitat kopioimisella, mutta oikean korvan valikosta tallentaminen ei huononna laatua mitenkään.

The Alchemist [21.06.2011 08:24:09]

#

Kaikki tiedonsiirto netissä on kopioimista. Ei ole mahdollista siirtää tietoa kopioimatta sitä. Eikä kuvia todellakaan tallenneta kopioimalla niitä jonnekin Paintiin ja tallentamalla uudestaan, vaan ihan suoraan tallentamalla kuva.

tsuriga [21.06.2011 09:39:32]

#

Ja tässä kun on kyseessä high-res kuvat niin tähdennetään, että tee kuvista thumb-versiot (pikkukuvat), joista linkkaat alkuperäisiin, ettei käyttäjän tarvitse ladata kerralla kaikkia high-res kuvia.

Olli [21.06.2011 09:44:38]

#

Kannattaa pitää erillään kuvien lataus koneelle ja niiden näyttö käyttäjille.
Latauksessa voit käyttää header-viritelmää ja lähettää täyden laadun kuvan. Ja kuten tsuriga sanoi, sivujen käyttäjille voit tehdä pienemmät kuvat joita sitten voi netistä katsella.

dartvaneri [21.06.2011 13:09:49]

#

Joo toi tsurigan idea on hyvä, mutta olen useaan otteeseen yrittänyt, mutta thumbnailit ei vaan oikeen tahdo onnistua.

The Alchemist [21.06.2011 13:15:28]

#

Voin kertoa sen, ettei kukaan jaksa kuviasi katsella, jos ainoa vaihtoehto on useiden megatavujen lataaminen ja tallentaminen koneelle. Tekisi mieleni kutsua tuota jopa idioottimaiseksi ratkaisuksi. Kuvat täytyy saada selaimeen auki juuri niin kuin on tarkoitettu, muuta sälää kehitellään siihen ympärille vain pakon sanelemana.

Lebe80 [21.06.2011 13:19:13]

#

dartvaneri: kokeilepas tämmöistä valmista kikkaretta:
http://phpthumb.sourceforge.net/


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta