بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

لیست فایل های مشخص در یک پوشه به صورت جیسون حل شد  + آموزش

مدیریت گفتگو
احمد 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان من پوشه عکسی دارم که تصاویر به صورت 

 01-001-00000001_l.png
01-001-00000001_m.png
01-001-00000001_s.png
01-001-00000002_l.png
01-001-00000002_m.png
01-001-00000002_s.png

داخلش قرار داره می خوام قسمت اول نام تصاویر یعنی تا قبل از _ را بفرستم به فایل php و لیست فایل ها را دریافت کنم به صورت جیسون فایل php من اینه:

 <?php
if ((!isset($_REQUEST['KCode'])) or ($_REQUEST['KCode'] == '')) {
    //   echo "Required Params(s) is missing; Param 1 Not Find";
    $response["success"] = 0;
    $response["message"] = "Required Params(s) is missing";
    echo $response["message"];
    exit;
} else {
    $KCode = $_REQUEST['KCode'];
    $dir2 = "K_Pic/";
    if (is_dir($dir2)) {
        if ($dh = opendir($dir2)) {
            while (($file = readdir($dh)) !== false) {
                if ($file == "." or $file == "..") {

                } else {
                 //   $files_array [] = $file; // Add the file to the array
                    $files_array[] = array('file' => $file); // Add the file to the array
                }
            }
        }
        $count = count($files_array);
        $temparray = array();
        for ($x = 0; $x < $count - 1; $x++) {
            if (strpos($files_array[$x], $KCode."_") !== false) {
                $temparray[] = $files_array[$x];
            }
        }
        if (count($temparray) > 0) {
            $return_array = array('name_array' => $temparray);
            //    echo json_encode($outputarray);
            echo json_encode($return_array);
        }
    }
}
?>

تا قبل از ـ باید دقیقا مثل عبارت ارسالی باشه اگه طریقه خوندن جیسونش را هم بگین ممنون میشم

نظرات

از تابع exclude برای تیکه تیکه کردن نام ها استفاده کنید یک آرایه به شما خروجی میده. مثلا اینجا بر اساس _ تابع رو صدا بزنید بع خونه ی صفر آرایه ی خروجی میشه همون چیزی که شما میخواین

پاسخ‌ها 1

احمد 10 سال پیش

فایل php را به صورت زیر بنویسید:

 <?php
if ((!isset($_REQUEST['KCode'])) or ($_REQUEST['KCode'] == '')) {
    //   echo "Required Params(s) is missing; Param 1 Not Find";
    $response["success"] = 0;
    $response["message"] = "Required Params(s) is missing";
    echo $response["message"];
    exit;
} else {
    $KCode = $_REQUEST['KCode'];
    $dir2 = "K_Pic/";
    if (is_dir($dir2)) {
        if ($dh = opendir($dir2)) {
            while (($file = readdir($dh)) !== false) {
                if ($file == "." or $file == "..") {

                } else {
                    $files_array [] = $file; // Add the file to the array
                    //   $files_array[] = array('file' => $file); // Add the file to the array
                }
            }
        }
        $count = count($files_array);
        $temparray = array();
        for ($x = 0; $x < $count; $x++) {
            if (strpos($files_array[$x], $KCode) !== false) {
                $temparray[] = $files_array[$x];
            }
        }

        if (count($temparray) > 0) {
            $outputarray["success"] = 1;
            $outputarray["images"] = $temparray;
            echo json_encode($outputarray);
        } else {
            $outputarray["success"] = -1;
            $outputarray["message"] = "No Image found.";
            echo json_encode($outputarray);
        }
    }
}
?>

خروجی فایل بالا اگر عکسی وجود داشته باشه به صورت زیر هست:

{"success":1,"images":["01-001-00000001_l.png","01-001-00000001_s.png","01-001-00000001_m.png"]}

برای خوندنش در آندروید هم می تونید از کد زیر استفاده کنید:

 	JSONArray jsonArray = null;
					try {
						int success = json.getInt("success");
						if (success == 1) {

							JSONArray itemArray = json.getJSONArray("images");
							for (int i = 0; i < itemArray.length(); i++)

							{
								String name = "" + itemArray.get(i);
								Log.i(G.APP_LOG, "name is: " + name);
							}
						} else {
							Toast.makeText(G.context, "success -1",
									Toast.LENGTH_SHORT).show();
						}
					} catch (JSONException | IllegalStateException jException) {
						Log.i(G.APP_LOG, "error in get data 1 ");
						jException.printStackTrace();

					} catch (NullPointerException e) {
						Log.i(G.APP_LOG, "error in get data 2 ");
					}

نظرات

Criss 10 سال پیش
این روش برای فایل های با حروف فارسی هم جواب میده ؟
احمد 10 سال پیش
تست نکردم داداش میخوای تست کنم؟
احمد 10 سال پیش
حروف فارسی را هم به صورت کد شده میاره {"success"["01-001-00000001_l.png","01-001-00000001_s.png","01-001-00000001_m.png","01-001-00000001_\u0633\u0644\u0627\u0645.png"]}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .