Tag Archive search

Byphunsanit

1 ภาพ 1,000 ข้อมูล

ต้องการจะเก็บภาพโดยเก็บตามวันที่ ที่โดนถ่าย เหมือนใน Camera Roll เพราะว่าภาพ TIFF, JPEG, WAV จะมีข้อมูล meta data ที่เรียกว่า Exchangeable image file format (Exif) ที่จะใส่ข้อมูลที่ถูกบันทึกไว้ตอนที่ถ่ายไว้โดยใช้กล้องดิจิติล มีข้อมูลสำคัญๆ อย่าง ถ่ายกับกล้องอะไร Manufacturer, Model เวลาที่ภาพถูกถ่าย Date and Time (original) มีการแต่งภาพรึเปล่า เมื่อไหร่ Date and Time (digitized) และถ่ายที่ไหน

ใน php เราสามารถใช้ function exif_read_data ดึงข้อมูลออกมาให้ใช้จัดการกับรูปได้ จะย้ายภาพไปเก็บไว้ตามวันที่ที่ถ่าย หรือตามสถานที่

<?php

/* fix maximum execution time */
set_time_limit(0);

/* find file */
$root = 'Photos';
echo'<dl>';
foreach (glob($root."/*.{jpeg,JPEG,jpg,JPG}", GLOB_BRACE) as $filename) {

	if($exif = exif_read_data($filename, 'IFD0'))
	{

		$date = date('Y-m-d', strtotime($exif['DateTimeOriginal']));

	    /* create folder */
	    $dir = $root.'/'.$date;
	    if (!is_dir($dir)) {
	        mkdir($dir, 0644, true);
	    }

	    /* move file */
	    $path = explode('/', $filename);
	    $newFile = $dir.'/'.$path[1];
	    rename($filename, $newFile);

	    echo '<dt>',$filename,'</dt>',
	    '<dd>',$newFile,'</dd>';

	}

}
echo'</dl>',
'<h1>Compleate!</h1>';
Byphunsanit

ย้ายไฟล์ลง folder ตามวันที่

เดิมไฟล์ backup ถูกเก็บในรูปแบบ ปี เดือน วัน โปรเจ็ค เช่น 2015-07-10-joomla.sql, 2015-07-10-joomla.zip, 2015-07-10-prestashop.sql, 2015-07-10-prestashop.zip ทุกๆวัน วันละ 4 ไฟล์ ถ้าเก็บแบบนี้ทุกวันก็จะมีไฟล์ 1,440 ไฟล์ เริ่มจะรก จะลบไฟล์แบ็กอัพเก่าๆ ออกก็ไม่สดวก ถ้ามีโปรเจ็คที่ต้องดูแลมากกว่านี้

ก็มีความคิดว่า ทำไม่ไม่เก็บ backup เป็น directory ปี เดือน วัน ละ เวลาลบจะได้ง่ายๆ อยากจะลบปีก่อนทั้งปี ก็แค่คลิก 2 ครั้งก็เสร็จ ลบ 3 เดือนที่แล้วก็ไม่ยาก มันแยกไว้อยู่แล้ว แต่ก่อนอื่นก็ต้องย้ายไปเก็บให้ถูกที่ก่อน

PHP มี function glob ช่วยหาไฟล์ตามรูปแบบอยู่ ทำให้เขียน code หาไฟล์ตามรูปแบบได้ ไม่ยากนัก

<?php
/* find file */
$root = 'backup';
foreach (glob($root.'/*-*') as $filename) {
	/* get path */
	$path = explode('/', $filename);
	list($year, $month, $date) = explode('-', $path[1]);

	/* create folder */
	$dir = $root.'/'.$year.'/'.$month.'/'.$date;
	if (!is_dir($dir)) {
		mkdir($dir, 0644, true);
	}

	/* move file */
	rename($filename, $dir.'/'.$path[1]);

}
rt :
สร้างโฟลเดอร์ตัวอักษรไทย
คัดลอกหมดทั้งโฟลเดอร์