1. 程式人生 > >php批量重新命名檔案

php批量重新命名檔案

<?php
/**
 * 1) 通過讀取csv文件(product_all.csv)中的產品編號獲取目錄1和目錄2下圖片對應編號的目錄
 *	(目錄1下圖片路徑:../imagezoom/id_1/image_xxx.jpg,
 * 	目錄2下圖片路徑:../show/id_1/image_xxx.jpg),並將目錄1和目錄2下對應產品編號的資料夾
 * 	重新命名為重新生成的編號,同時將獲取到的資料和修改的資料匯入新的csv文件(new.csv)中
 * 2) 通過讀取資料庫中的 productimage 表 將資料中產品編號按①中修改後匯入到
 *	 新的csv檔案(image_processed.csv)中
 */
//要把字元轉換成utf-8編碼,首先當前頁面也必須是utf-8的編碼,否則會報錯
$directory_1 = 'D:/資料/images/test/imagezoom'; //目錄1
$directory_2 = 'D:/資料/images/test/show';	//目錄2
$handlefile_0 = 'D:/資料/images/test/product_all.csv'; //商品資料
$handlefile_1 = 'D:/資料/images/test/new.csv'; //用來接收重新編號過的商品資料
$file_0=fopen(iconv('UTF-8','gbk',$handlefile_0),'r');
$file_1 = fopen(iconv('UTF-8','gbk',$handlefile_1),'w');

require('../php_connect_test/connect_test.php');	//資料庫連線
$handlefile_image = 'D:/資料/images/test/image.csv';	//用來讀取表頭的檔案 全部內容:proImageId,piProductId,image,imageType (只有一行資料,這行程式碼可有可無)
$file_image = fopen(iconv('UTF-8','gbk',$handlefile_image),'r');

$handlefile_image_processed = 'D:/資料/images/test/image_processed.csv';  //接收 productimage 表處理後資料
$file_image_processed = fopen(iconv('UTF-8','gbk',$handlefile_image_processed),'w');
$listline = 0;
while(!feof($file_0)){
	
	$data = fgetcsv($file_0);
	if($data){
		$suk = 10000 + $listline;
		$result = mysqli_query($conn,'SELECT * from productimage pi where piProductId='.$data[0]); //查詢
		
		
		if(intval($listline)>0){
			while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
				$row['piProductId']=$suk;
				//print_r($row);
				fputcsv($file_image_processed,$row);
				
				
			}
			$imagezoom_dir = $directory_1.'/'.$data[0];
			$show_dir = $directory_2.'/'.$data[0];
			$new0_dir = $directory_1.'/'.$suk;
			$new1_dir = $directory_2.'/'.$suk;
			
			if(!file_exists(iconv("utf-8", "gbk", $new0_dir))){
				rename(iconv("utf-8", "gbk", $imagezoom_dir),iconv("utf-8", "gbk", $new0_dir));
				rename(iconv("utf-8", "gbk", $show_dir),iconv("utf-8", "gbk", $new1_dir));
			}
			$data[0] = $suk;
			$headImage = explode('/',substr($data[10],strlen('/productImg/show/'))); // 路徑:/productImg/show/ 為 product_all.csv 中第11列的部分欄位 格式如:/productImg/show/10913655629/587c7f2cNd6376666.jpg,該行程式碼通過 "/" 分割除 "/productImg/show/" 外的欄位為陣列
			$headImage[0] = $data[0]; // 將重新編號後的產品編號傳給$headImage 用於重新定義 product_all.csv 中的第11個欄位
			$data[10] = '/productImg/show/'.implode('/',$headImage);
		}else{
			
			fputcsv($file_image_processed,fgetcsv($file_image));
		}
		print_r($data[0]);
		fputcsv($file_1,$data);
	}

	print_r('<br>');
	$listline++;
}
fclose($file_1);
fclose($file_0);