kesme hatalarını yakalamak için php dosya işaretleyici ffd9 jpeg ucuna (?) için el ile kontrol

oy
3

temelde zamanından önce bir koleksiyonundan jpeg dosyaları biten bozuk kaldırmaya çalışırken. Dosya işaretçisi sonu Görüntü kesik geliyordu o zaman devamsızlık olsaydı ben düşündüm ve bu yüzden benim amaçlar için geçersiz ele alacak. Sesi denetleme Bu yöntemdir? eğer öyleyse ben php bunu uygulamak nasıl herhangi bir fikir?

şerefe

Oluştur 22/09/2009 saat 13:47
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
4

bunu dene:

$jpgdata = file_get_contents('image.jpg');

if (substr($jpgdata,-2)!="\xFF\xD9") {
  echo 'Bad file';
}

Bu belleğe tüm JPG dosyasını yüklemek istiyorum ve büyük dosyalar için bir hata içine neden olabilir.

Alternatif:

$jpgdata = fopen('image.jpg', 'r'); // 'r' is for reading
fseek($jpgdata, -2, SEEK_END); // move to EOF -2
$eofdata = fread($jpgdata, 2);
fclose($jpgdata);

if ($eofdata!="\xFF\xD9") echo 'Bad file';
Cevap 22/09/2009 saat 13:56
kaynak kullanıcı

oy
0

Bir deneyin catch ve a ile bu sorunu çözdü @fonksiyonun önünde:

    try
    {
        if (!@imagecreatefromjpeg($photoPath)
            throw new Exception('The image is corrupted!');
    }
    catch(Exception $e)
    {
        $error = $e->getMessage();
        Yii::app()->user->setFlash('addphoto', Yii::t('app', $error));
    }
Cevap 11/11/2013 saat 13:25
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more