PDA

View Full Version : مشکل با تابع glob برای گرفتن فایلهای موجود در یک پوشه خاص



desatir7316
یک شنبه 10 فروردین 1393, 03:02 صبح
سلام دوستان
چرا دستور glob مقداری برنمی گردونه؟


$dirname = Yii::app()->request->baseUrl . '/images/categories/' . $model->category_id . '/' . $model->item_id . '/';
$images = glob($dirname."*.jpg");


در حالی که اینجوری تستش می کنم همه چیز مرتبه:


<img src="<?php echo $dirname?>1.jpg"/>


حالا دلیل اینکه این پست رو اینجا زدم اینه که از وقتی این تابع رو توی yii استفاده کردم به این مشکل بر خوردم
حالا اگه تابع دیگه ای هم باشه که این کار رو انجام بده بازم ممنونم

MMSHFE
یک شنبه 10 فروردین 1393, 13:35 عصر
دوست عزیز، baseUrl یک مسیر اینترنتیه (URL) و نه یک مسیر فیزیکی. شما باید اینطوری کار کنید:


$dirUrl = Yii::app()->request->baseUrl . '/images/categories/' . $model->category_id . '/' . $model->item_id . '/';
$dirPath = Yii::app()->request->basePat . '/../images/categories/' . $model->category_id . '/' . $model->item_id . '/';
/*
* if we use $images = glob($dirPath . '*.jpg'); the results will be prepended with $dirPath
* for example C:/xampp/htdocs/helloworld/images/categories/5/7/1.jpg
* not just 1.jpg
* so we go inside the desired directory and retrieve it's files and then move back to the current working directory
*/
$cwd = getcwd(); // current working directory
chdir($dirPath);
$images = glob('*.jpg');
chdir($cwd);
foreach($images as $image) {
echo '<img src="' . $dirUrl . $image . '" /><br />' . PHP_EOL;
}

desatir7316
یک شنبه 10 فروردین 1393, 14:11 عصر
ممنون


$dirPath = Yii::app()->request->basePat . '/../images/categories/' . $model->category_id . '/' . $model->item_id . '/';

از این ارور گرفت که با ای عوضش کردم و درست کار کرد:


Yii::app()->basePath
یعنی شد این:

$dirPath = Yii::app()->basePath . '/../images/categories/' . $model->category_id . '/' . $model->item_id . '/';