PHP: (bir img etiketi) bir akımdan bir görüntü tut ama orada değilse, ben img yazılı istemiyorum.

3 Cevap php

Ben şu anda bir iç ağdan bir görüntü kapmak için 'view_file.php' adlı bir web tabanlı dosya içinde bu gibi bir kod vardır.

<img src="put_file.php?type=<?=$TN_TYPE;?>&path=<?=$TN_PATH;?>&filename=<?=$TN_FILENAME;?>" />

'Put_file.php' yazısı biz internet maruz istemiyorum bir iç sunucuya erişim sağlar. Bu komut bir görüntü mevcuttur ve eğer bir görüntü başlığı gönderir ve daha sonra kullanıyorsa readfile() 'view_file.php' sayfasına görüntü akışı görmek için denetler.

Yerine i img tüm yazılı olmayan istiyorum 'spacer.gif' geçici bir akarsu mevcut bir görüntü, yoksa sorundur.

Any Ideas how to do this? I'm thinking maybe move the img tag into the 'put_file.php' script, but how to mix strings and steams?

3 Cevap

Sadece yapılamaz bence.

  • Sen put_file.php PHP, o döner görmek, ve boş bir değer (veya 404 başlığını ya da her neyse) dönerse img etiketi yazma kaçınmaları için bir çağrı yapabilir. Apaçık con: istek iki kez yapılan ve bu komut karmaşık hale.

  • Sen put_file.php bir Ajax çağrısı sonucu bağlı JavaScript görüntü öğesi oluşturabilirsiniz. Apaçık con: düz yükleme sonra sırıtmak ve JavaScript gerektirir yapmaz.

Her iki seçenekle de could base64-encoded data: URI en içine test isteği sonuçlarını aktarmak tarafından bir istekte düşürülebilir, ama (yok IE desteği) son derece uyumsuz ve Bloats tarayıcı tarafında sayfa (görüntü veri artı% 33 havai sırasıyla, düz kaynak kodu, ya da JavaScript bellekte mevcut olacaktır). Ben bunu tavsiye etmem.

Eğer mümkünse, ben şahsen spacer.gif çözüm sopa ile olur.

Eğer görünmesini görüntüleri istemiyorum sadece eğer Update: Bir diğer fikir, görüntü olmadığı zaman bir 404 başlık gönderirken, ve {[kullanan olurdu için img etiketinin (2)]} olay, diyelim ki, bir <img onerror='this.style.display = "none"'> yapmak. Tabii Javascript gerektirir. Hata olayı tam olarak tüm tarayıcılar (referans here, Almanca sadece üzgünüm desteklenecek gibi görünüyor, ama sen :) simgelerini görürsünüz.

Siz ne istediğinizi yapmak için base64 kullanabilirsiniz.

http://www.sweeting.org/mark/blog/2005/07/12/base64-encoded-images-embedded-in-html

Eğer varlığını kontrol etmeden IMG etiketini yazmak gibi seemd. Sizin sunucu 1x1 şeffaf görüntü göndermek veya 404 hatası dönebilirsiniz. 404 çeşitli tarayıcılarda bir "kırık imaj" simgesi neden olacaktır.

En iyi yolu konteyner php komut dosyası içindeki görüntünün varlığı için kontrol etmek, bu doğrultuda somehting:

<?php
    if (is_present($TN_PATH, $TN_FILENAME))
    {
        ?>
        <img src="put_file.php?type=<?=$TN_TYPE;?>&path=<?=$TN_PATH;?>&filename=<?=$TN_FILENAME;?>" />
        <?php
    }
?>

Alternatif ve çirkin yolu görüntü durumunu sorgulamak ve / veya bunları görüntülemek için JavaScript / Ajax kullanmaktır.