2017-01-13 9 views
0

質問:元のファイル名を保持している間にファイルをアップロードしてフォルダに存在する場合は名前を変更する方法は?

どのように我々は、フォルダにファイルをアップロードし、特定の名前に名前を変更し、ファイル名が存在している場合、我々は、フォルダ内の既存のファイルの名前を変更することができますか?例えば

1:は "更新" にアップロード中のファイルの名前を変更し、許可拡張を続けます。

Booking.xlsx --->名前の変更---> update.xlsx

2:update.xlsxがフォルダ内に存在している場合は、我々は拡張名と現在の時刻の日付形式に名前を変更します。

(YYYY-MM-DDTHH:MM:ss.sTZD)

update.xlsx --->フォルダ内に名前を変更---> 2017-01-14T19:20:30.45 + 01:00.xlsxファイル名が存在している場合

、:

$allowed = array('png', 'jpg', 'gif', 'xlsx','zip'); 
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){ 
$extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION); 
if(!in_array(strtolower($extension), $allowed)){ 
    echo '{"status":"error"}'; 
    exit; 
} 
if(move_uploaded_file($_FILES['upl']['tmp_name'], 'uploads/'.$_FILES['upl']['name'])){ 
    echo '{"status":"success"}'; 
    exit; 
} 
} 
echo '{"status":"error"}'; 
exit; 

詳細情報:ここでは

は私のアップロードファイルコードです既存のファイルをフォルダ内の日付形式に名前を変更してファイルを特定の名前にアップロード/名前を変更したい更新 ファイルが存在するかどうかを確認してメッ​​セージをエコーすることはできますが、上記の番号2。

+1

ファイルが存在するかどうかを確認します。 –

+0

もう1つ:自分でjsonタイプのレスポンスを作成しないでください。代わりに 'json_encode'を使用してください:' $ response = ['status' => 'success'];エコーjson_encode($応答) '; – Peon

+0

既存のファイルの名前を日付形式に変更するにはどうすればよいですか?質問2によると! – Jomla

答えて

0

renameメソッドを使用できます。

$allowed = array('png', 'jpg', 'gif', 'xlsx','zip'); 
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){ 
    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION); 
    if(!in_array(strtolower($extension), $allowed)){ 
     echo '{"status":"error"}'; 
     exit; 
    } 
    $destination = "uploads/update.xlsx"; 
    if(file_exists($destination)){ 
     rename($destination, "uploads/" . date("Y-m-d\TH:i:sP") . ".xlsx"); 
    } 

    if(move_uploaded_file($_FILES['upl']['tmp_name'], $destination)){ 
     echo '{"status":"success"}'; 
     exit; 
    } 
} 
echo '{"status":"error"}'; 
exit; 
+0

あなたのコードに構文エラーがあります。 – Jomla

関連する問題