我的应用程序有一个“照片
”字段来存储 URL。它使用 sfWidgetFormInputFileEditable 作为小部件架构。要在上传新图像时删除旧图像,我在重写的 setter 中设置值之前使用 unlink,并且它有效!!!
if (file_exists($this->_get('photo')))
unlink($this->_get('photo'));
- 照片存储在上传/照片中,保存“
照片
”时,仅保存文件名xxx-yyy.zzz
(而不是完整路径)。但是,我想知道symfony/php如何知道要删除的文件的完整路径?
第 2 部分: 我正在使用 sfThumbnailPlugin 来生成缩略图。所以实际的代码如下所示:
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');
}
- 为什么无法使用 unlink() 删除缩略图?操作顺序是否不正确?
是因为
sfWidgetFormInputFileEditable
小部件中显示的是旧缩略图吗?
我花了几个小时试图解决这个问题,但无法确定真正的原因。 提前致谢。
最佳答案
$path = "上传/照片"; $image = "图片名称";
unlink($path.$image);
关于php - unlink()如何找到要删除的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673139/