2016-05-05 5 views
-2

内のすべてのファイルの名前を変更し、私は私のウェブサイト上のフォルダ内のすべてのファイル(画像)の名前を変更しようとしているが、それは動作しません。ファイルの名前は変更されません。は、フォルダ

私は、その名前を使用uniqidを追加し、すべてのファイルの名前を変更したい「名前」の入力欄があります。 は、ここで私が使用していたコードです:

<?php 
if(isset($_POST['submit2'])){ 
$name = $_POST['name']; 
$directory = glob("../basic_images/*.*"); 
{ 
if ($file != "." && $file != "..") { 

    $newName = uniqid().$name; 

    rename($directory.$file, $directory.$newName); 
}}} 
?> 

以外に、私は本当に_POSTに$名変数が必要なのでしょうか?

P.S.私はすべてのファイルの名前を変更し、別のフォルダにコピーしたいと思う。あなたはname

globを投稿する必要はありません

+1

「うまく動作しないようです」というのは良い問題の説明ではありません。発生したエラーや問題について詳しく説明してください。 – Thernys

+2

あなたは '$ file'を定義しません。 –

+1

http://php.net/manual/en/function.glob.php –

答えて

0

は、あなただけのファイルをループにforeachを行う//例/basic_images/test.jpg

パスであなたのフォルダ内のすべてのファイルを返しており、その名前を更新します。

$path = "../basic_images/"; 
$directory = glob($path,"*.*"); 
foreach($directory as $file){ 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $newName = uniqid().$ext; 
    rename($file, $path.$newName); 
} 

globについて詳しく読む:http://php.net/manual/en/function.glob.php

0

をので、私は最終的に問題を解決しました。今、代わりに元のファイルの名前を変更して、別のフォルダにコピーするのは、私はちょうど新しい名前を持つファイルの新しいコピーを作成します。新しいファイルが任意の拡張子を持っていないので、それなし$pic.'.'.$extを使用することが重要である

if(isset($_POST['submit'])){ 

$path = "../posts_images/"; 
$files = glob("../basic_images/*.*"); 
foreach($files as $file){ 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    $name = $_POST['new_name']; 
    $pic = uniqid().$name; 
    $newName = $pic.'.'.$ext; 
    copy($file, $path.$newName); 

}} 

これは私のために動作するコード最終的なコードです。