WebHU - Programozási kérdések és válaszok

Hogyan készítsünk olyan képet, amely egy link?

A képlinkjeim jelenleg így néznek ki:

a linkek szövegként jelennek meg

Így kell kinéznem:

a linkek képként jelennek meg

A képeimet a következő helyen tároljuk: APP/uploads/userid/images/filename.jpg

Jelenleg ez a véleményem:

  <?php foreach($file as $files){?>

      <?php  echo $this->Html->link($files['Image']['filename'], array('controller' => 'images', 'action' => 'downloadImages', $files['Image']['filename']), array('class' => 'frame'));}?>

Működik, és a linkre kattintva megfelelően megjelenik a megfelelő kép.

Vezérlő kódrészlet referenciaként:

    public function downloadImages($filename) {


    $download = !empty($_GET['download']);
    $idUser = $this->Auth->user('idUser');
    $folder_url = APP.'uploads/'.$idUser.'/'.'images'.'/'.$filename;

    $this->response->file($folder_url, array('download' => $download, 'name' =>   $filename));

    return $this->response;
}

Mit kell tennem, hogy a képek hivatkozásként jelenjenek meg a fájl neve helyett?


  • link helyett egy képet akarok mutatni... remélem érted... írd meg most online fájlnév visszhangzik a megtekintő oldalon, nem a kép... 27.07.2013
  • @AD7six elnézést a rossz írásért. frissítettem a kérdésem 27.07.2013
  • mindenesetre köszönöm, hogy segített uram... igazán köszönöm .. elnézést kérek, ha valamit rosszul csináltam 27.07.2013
  • bocs @AD7six működik... hát nem láttam a frissített válaszodat... köszönöm, kipróbáltam.. működik.. a kód, ami középen volt .. 27.07.2013
  • k ez zavaró volt – a válasz törlése visszavonva, a negatív szavazat pedig eltávolítva. 27.07.2013
  • köszönöm elnézést mindent 27.07.2013

Válaszok:


1

Hogyan lehet képlinket generálni

A kérdésben ez a sor van (az érthetőség kedvéért átfogalmazva):

$downloadUrl = array('controller' => 'images', 'action' => 'downloadImages', $files['Image']['filename'], '?' => array('download' => true));
$imageUrl = array('controller' => 'images', 'action' => 'downloadImages', $files['Image']['filename']);

echo $this->Html->link(
    $files['Image']['filename'], 
    $downloadUrl,
    array('class' => 'frame')
);

A fájlnév hivatkozása helyett - link a képre:

echo $this->Html->link(
    $this->Html->image($imageUrl),
    $downloadUrl,
    array('class' => 'frame', 'escape' => false)
);

VAGY használja közvetlenül a kép funkciót, mivel a A kép funkció ezt támogatja:

echo $this->Html->image(
    $imageUrl,
    array(
        'url' => $downloadUrl
    )
);
27.07.2013

2

Itt van az y GemsImageComponent másolata, amellyel képeket küldök a böngészőbe a lemezről. Kezeli a gyorsítótárazást, és a fájl időbélyegét használja annak ellenőrzésére, hogy a képet újra el kell-e küldeni, vagy hogy a böngésző aktuális gyorsítótárazott verziója naprakész-e.

Kérjük, szavazzon, ha hasznosnak találja ezt.

<?php

/**
 * $settings['cache'] string (optional) How long the browser should cache
 * images.
 * $settings['expires'] string (optional) If all images should expire after a
 * given period from the browsers cache.
 */
class GemsImageComponent extends Component
{

    /**
     *
     * @var array The default settings for the component.
     */
    protected $defaults = array(
            'cache' => '+7 days',
            'expires' => false
    );

    /**
     *
     * @var Controller The controller using this component.
     */
    protected $controller;

    /**
     *
     * @see Component::__construct()
     */
    public function __construct(ComponentCollection $collection,
            $settings = array())
    {
        parent::__construct($collection,
                Hash::merge($this->defaults, $settings));
    }

    /**
     *
     * @see Component::startup()
     */
    public function startup(Controller $controller)
    {
        $this->controller = $controller;
    }

    /**
     * Sends an image from disk to the browser.
     *
     * @param string $file The full path to the image file.
     * @return mixed The value that the View should return.
     */
    public function send($file)
    {
        $response = $this->controller->response;
        $settings = $this->settings;

        // the file has to exist
        if(! file_exists($file))
        {
            throw new NotFoundException();
        }

        // set browser cache options
        if($settings['cache'] !== false)
        {
            $response->cache('-1 minute', $settings['cache']);
        }
        if($settings['expires'] !== false)
        {
            $response->expires($settings['expires']);
        }

        // mark this image with a timestamp of when it last changed.
        $timestamp = filemtime($file);
        $response->modified($timestamp);

        // generate a unique ID that browser cache engines can use to track this
        // resource.
        // TODO: Add GEMS version number to the hash tag.
        $unique = sha1(sprintf('%s-%d', $file, $timestamp));
        $response->etag($unique);

        // check if we can abort sending this resource
        if(! $response->checkNotModified($this->controller->request))
        {
            $response->file($file, array(
                    'download' => false
            ));
        }

        return $response;
    }
}

?>
27.07.2013
  • Nem tudom pontosan, mi a kérdés – de nem hiszem, hogy ez ad választ. 27.07.2013
  • @AD7six Azt hittem, hogy egy képfájlt akar küldeni a böngészőnek anélkül, hogy kiváltaná a save as.. promptot? de nehéz megérteni a kérdést. 27.07.2013
  • @hellosheikh, használd a $this-›HTML-›képet a $this-›HTML-›link helyett 27.07.2013
  • @hellosheikh book.cakephp.org/2.0 /en/core-libraries/helpers/ 27.07.2013
  • @MathewFoscarini ezt is kipróbálom .. de akkor most az img src url-je ilyen lesz, mint ez a localhost/cakephp/img/picture1.jpg, ami valójában hibás. 27.07.2013
  • @hellosheikh elolvasta a dokumentumokat, azt írja, hogy a html attribútumokban állítsa be a url értéket. 27.07.2013
  • még mindig nem jelenik meg a kép .. de ha rákattintok a képre, akkor megjelenik a kép, amit biztosan nem akarok 27.07.2013
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..