Hei,
Sivuillani on käytössä kuvagalleria. Haluaisin, että kuvat tulisivat toiselta FTP:ltä. Onko mahdollista linkittää toisen FTP:n kansio omille sivuilleni?
Paikallisesti kansiaon haku toimii tällä koodilla:
$images_dir = 'images1/'; $thumbs_dir = 'thumbs1/'; if($handle = opendir($images_dir)) {
Yritin linkittää tuon kansion toisesta FTP:stä näin:
$images_dir = 'ftp://user:password@ftpserver_url/path1'; $thumbs_dir = 'ftp://user:password@ftpserver_url/path2'; if($handle = opendir($images_dir)) {
Mutta eihän tuo toimi.
FTP ei ole mikään paikka vaan tiedostonsiirtoprotokolla. Ei ole ”toista FTP:tä”, vaan on toinen palvelin, johon haluat ottaa FTP-yhteyden.
Mietipä ensin tavoitteitasi. Jos saatkin kuvat listattua, miten aiot näyttää ne käyttäjälle? Pelkkä img-tagin tulostaminen ei maagisesti hae ja näytä kuvaa, vaan img-tagissa on src-attribuutti sitä varten, että selain pystyy hakemaan kuvan itse. Joutuisit siis laittamaan src-attribuuttiin tuon FTP-palvelimen osoitteen käyttäjänimineen ja salasanoineen, mikä ei varmaankaan ole toivottavaa. Käytännössä selaimet tuskin edes osaavat hakea kuvia FTP:llä, joten joudut tekemään jonkin PHP-skriptin, joka hakee kuvan ja antaa sen selaimelle.
Ensin sinun pitää ottaa palvelimeen FTP-yhteys ja pyytää lista tiedostoista. Sitten sinun pitää joko kopioida kuvat omalle palvelimellesi tai tehdä erillinen PHP-skripti, joka pyydettäessä hakee kuvia toiselta palvelimelta käyttäjän selaimelle. Jälkimmäisessä tapauksessa kuvan osoitteeksi tulee esim. http://sivustosi/toinen_ftp.php?path=/path1/
Parempi vaihtoehto olisi saada myös tuo toinen palvelin HTTP:llä tavoitettavaksi, mutta kun kerran kysyt FTP:stä, oletan, että tätä vaihtoehtoa ei ole.
Jos et ymmärtänyt tästä kaikesta sanaakaan, tässä on vaihtoehtoinen lyhyt vastaus: ei ole vielä sinulle mahdollista.
Oletan että tuo toinenkin verkkokosoite on sinun omasi.
Luo sinne pieni tiedosto, jossa on listassa kuvien url-osoitteet. Hae sitten tuo lista haluamallasi tavalla ja tulosta kuvat.
Dino kirjoitti:
Onko mahdollista linkittää toisen FTP:n kansio omille sivuilleni?
On, esimerkiksi linkillä, jossa href-määritteen arvo on
ftp://ftp.funet.fi/pub/graphics/misc/pictures/
On kyllä mahdollista, että tarkoitit jotain muuta kuin linkittämistä. Kerro sitten toki mitä.
Dino kirjoitti:
Yritin linkittää tuon kansion toisesta FTP:stä näin:
$images_dir = 'ftp://user:password@ftpserver_url/path1'; $thumbs_dir = 'ftp://user:password@ftpserver_url/path2'; if($handle = opendir($images_dir)) {Mutta eihän tuo toimi.
Mitähän sen on tarkoitus tehdä? Ja mitä kieltä, missä (selaimessa? palvelimessa?) suoritettavaa se on?
Ainakin kooditagien perusteella pitäisi olla js:ää vaikkei tuo ihan siltä ehkä vaikutakaan.
pistemies kirjoitti:
Oletan että tuo toinenkin verkkokosoite on sinun omasi.
Luo sinne pieni tiedosto, jossa on listassa kuvien url-osoitteet. Hae sitten tuo lista haluamallasi tavalla ja tulosta kuvat.
Jos cdn:nä toimivalta palvelimelta ei löydy skriptitukea, niin tekisin kyllä "oman palvelimen" päähän tarvittavat listaustoiminnot. Eli ftp:n yli lukee hakemiston sisällön ja muodostaa tarvittavan listauksen. Sen voi cachettaa paikallisesti levylle, jolloin ftp-yhteyttä ei tarvitse availla koko ajan. Toisaalta itse haluaisin yksinkertaistaa ylläpidollisia toimenpiteitä, joten toteuttaisin tämän niin, että tiedostot uploadataan suoraan pääpalvelimelle, joka työntää itse tiedostot cdn-palvelimelle ja samalla päivittää paikallisesti ylläpidettävää tiedostolistausta. Tällöin ei tule viivettä tiedostojen lisäämisen ja sivuilla näkymisen välillä. Haittapuolena tiedosto tarvitsee siirtää kaksi kertaa.
Tuo on PHP-kieltä. Ohjelmoinnista en tosiaan paljoa tiedä, mutta yritän silti saada tämän toimimaan. Eli ensiksi pitäisi avata yhteys sinne toiseen palvelimeen. Yritän nyt tutkia tuota asiaa, jos vaikka saisinkin sen toimimaan. Jokatapauksessa tässä nyt sen gallerian koodi, jonka tarkotuksena on hakea ne kuvat.
/** settings **/ $images_dir = 'preload-images/'; $thumbs_dir = 'preload-images-thumbs/'; $thumbs_width = 200; $images_per_row = 3; /** generate photo gallery **/ $image_files = get_files($images_dir); if(count($image_files)) { $index = 0; foreach($image_files as $index=>$file) { $index++; $thumbnail_image = $thumbs_dir.$file; if(!file_exists($thumbnail_image)) { $extension = get_file_extension($thumbnail_image); if($extension) { make_thumb($images_dir.$file,$thumbnail_image,$thumbs_width); } } echo '<a href="',$images_dir.$file,'" class="photo-link smoothbox" rel="gallery"><img src="',$thumbnail_image,'" /></a>'; if($index % $images_per_row == 0) { echo '<div class="clear"></div>'; } } echo '<div class="clear"></div>'; } else { echo '<p>There are no images in this gallery.</p>'; }
No edelleen se Metabolixinkin esittämä kysymys: onko palvelin oikeasti rajoitettu ftp:hen vai etkö vain ymmärrä ftp:n merkitystä? Jos tiedostot on saatavissa julkisessa webissä http:n kautta eli "perinteisesti", niin tässä ei ole juurikaan ongelmia. Tuollainen ftp:n kautta kopioiminen olisi joka tapauksessa täysin mahdoton idea käytännön rajoitteiden vuoksi.
Kuvat voi hakea normaalisti http:n kautta. Voin siis linkittää yksittäisiä kuvia normaalisti. Ongelmana on vain tuon kansion hakeminen. Eli hieman korjaten tuota aiempaa kysymystäni: Voinko hakea kansion toiselta palvelimelta tuohon galleriaan?
Tarkoitatko "kansion hakemisella" tiedostolistauksen hakemista vai mitä?
Toki on mahdollista tehdä skripti joka kopioi esimerkiksi FTP:llä jonkun kansion sisältöineen palvelimelle, jossa skripti ajetaan.
Järkevien vastausten antamiseksi pitäisi saada selkeämpiä kysymyksiä. Tai vaihtoehtoisesti voisit selittää, mitä itse asiassa olet tekemässä.
Olen melko varma, että kaveri tarkoittaa juurikin tuota tiedostolistausta.
Eli PHP:n ftp-moduulilla onnistuu. Vaan ei siinä paljoa järkeä ole. Yksi myös jo täällä esitetty ratkaisu, on panna toiselle palvelimelle php-skripti, joka hakee tiedostolistauksen. Tätä skriptiä voi sittemmin kutsua http:n kautta.
Edit 2: Vaan jos thumbnaileja haluat generoida, täytyy se toki ottaa huomioon. Voit joko generoida ne palvelimelle, joka "näyttää kuvat", tai voit vaikkapa panna tiedostolistaussriptin tekemään sen toiselle palvelimelle tarpeen vaatiessa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.