while循环从$ _GET创建文件

时间:2017-06-07 16:23:51

标签: php while-loop get

我创建了一个从GET语句中获取MP3文件的脚本。我需要一种方法来确保如果原始名称“recording.mp3”不存在,则从GET内容创建它,如果它确实存在,则在文件名后附加一个数字。我究竟做错了什么?到目前为止不起作用的部分是附加数字,但获取文件和保存效果很好。删除while循环和程序工作!

<?php 
$actual_name = pathinfo("PHPAPI/recording.mp3",PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo("PHPAPI/recording.mp3",PATHINFO_EXTENSION);

$i = 0;
if ($_GET["RecordingUrl"]){
    while(file_exists("PHPAPI/".$actual_name.".".$extension)){
        $actual_name = $original_name.$i;
        $name = $actual_name.".".$extension;
        $i++;
    }
    file_put_contents($name, file_get_contents($_GET["RecordingUrl"]));
}
elseif ($_GET["RecordingUrl"]){
    file_put_contents($original_name.".".$extension,
    file_get_contents($_GET["RecordingUrl"]));
}
?>

1 个答案:

答案 0 :(得分:0)

要使代码更有条理,请使用函数

<?php 
$actual_name = pathinfo("PHPAPI/recording.mp3",PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo("PHPAPI/recording.mp3",PATHINFO_EXTENSION);

if ($_GET["RecordingUrl"]) {
     if (file_exists("PHPAPI/".$actual_name.".".$extension)) {
        $actual_name = find_new_name($original_name, $extension);
     } else {
        $actual_name = $original_name;
     }
     $name = $actual_name.".".$extension;
     file_put_contents($name, file_get_contents($_GET["RecordingUrl"]));
}

function find_new_name ( $file, $extension ) {
    $name = $file.".".$extension;
    $i = 0;
    while(file_exists("PHPAPI/".$name)){
        $new_name = $file.$i;
        $name = $new_name.".".$extension;
        $i++;
    }
    return $new_name;
}
 ?>