Nasıl) silmek için dosyayı bulmak (bağlantısını nedir?

2 Cevap php

Benim app URL depolamak için bir 'Photo' alanı vardır. Bu Widget şeması için sfWidgetFormInputFileEditable kullanır. Yeni bir görüntü yüklendiğinde eski imajını silmek için, ben aşırı basmış setter değerini ayarlamadan önce bağlantısını kullanın ve çalışıyor!

if (file_exists($this->_get('photo')))
    unlink($this->_get('photo'));
  1. Kaydederken Fotoğraflar yüklenenler / fotoğrafları saklanır ve 'Photo' sadece dosya adı xxx-yyy.zzz (tam yolunu değil) kaydedilir. Ancak, ben symfony / php silinecek dosyanın tam yolunu bilir nasıl bilmek ister misiniz?

Part 2: I am using sfThumbnailPlugin to generate thumbnails. So the actual code looks like this:

public function setPhoto($value)
    {   
        if(!empty($value))
            {
                Contact::generateThumbnail($value); // delete current Photo & create thumbnail
                $this->_set('photo',$value);    // setting new value after deleting old one
            }
    }   

    public function generateThumbnail($value)
    {
                $uploadDir = sfConfig::get('app_photo_upload'); // path to upload folder
                if (file_exists($this->_get('photo')))
                {
                  unlink($this->_get('photo')); // delete full-size image
                  // path to thumbnail
                  $thumbpath = $uploadDir.'/thumbnails/'.$this->get('photo'); 
                  // read a blog, tried setting dir manually, doesn't work :(
                  //chdir('/thumbnails/');
                  // tried closing the file too, doesn't work! :(
                  //fclose($thumbpath) or die("can't close file"); 
                  //unlink($this->_get('photo'));   // doesn't work; no error :( 
                  unlink($thumbpath);   // doesn't work, no error :(
                }

                 $thumbnail = new sfThumbnail(150, 150);
                 $thumbnail->loadFile($uploadDir.'/'.$value);
                 $thumbnail->save($uploadDir.'/thumbnails/'.$value, 'image/png');
    }
  1. Why can't the thumbnail be deleted using unlink()? is the sequence of ops incorrect? Is it because the old thumbnail is displayed in the sfWidgetFormInputFileEditable widget?

I've spent hours trying to figure this out, but unable to nail down the real cause. Thanks in advance.

2 Cevap

Çözüldü & Şaşırmış

Tamam, burada bazı yankıları ekledikten sonra çalıştı kodu ...

public function generateThumbnail($value)
    {
             $uploadDir = sfConfig::get('app_photo_upload'); // path to upload folder
                // path to thumbnail
             $thumbpath = $uploadDir.'/thumbnails/'.$this->get('photo'); 
             if (file_exists($uploadDir.$this->_get('photo')))
             {
            >>    unlink($uploadDir.$this->_get('photo')); // delete full-size image
            >>    unlink($thumbpath); // delete thumn
             }

    //thumbnail generation code
    }

Supposedly, the unlink($this->_get('photo')) never worked. Infact, the if(fileExists) block was never entered and yet the file was deleted. I think sfWidgetFormInputFileEditable was deleting the full-image automatically when a new one was being uploaded.

Thanks Martin & Kanak

Eğer bu hat konusunda emin misin?

$thumbpath = $uploadDir.'/thumbnails/'.$this->get('photo');

Sana $this->_get('photo'); yerine $this->get('photo'); kullanımı gerektiğini düşünüyorum

Belki $thumbpath değişkeni dökümü deneyin.

var_dump($thumbpath); exit;