fix*_*ode 8 php if-statement get while-loop
file_exists不起作用.我看了几个例子但仍然没有.程序未检测到该文件.我的文件路径是/var/www/osbs/PHPAPI/recording.mp3,网站根目录是osbs.此文件的位置在PHPAPI中,这就是我没有在file_put_contents中放置完整路径的原因.该程序能够制作原始recording.mp3,但不能制作任何附加版本.
<?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("/var/www/osbs/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("/var/www/osbs/PHPAPI/".$name)){
$new_name = $file.$i;
$name = $new_name.".".$extension;
$i++;
}
return $new_name;
}
?>
Run Code Online (Sandbox Code Playgroud)
你的问题与file_put_contents. 您需要指定完整路径,并且仅指定文件名。试echo$name在使用它之前
我建议您在文件开头使用路径设置一个常量,而不是有时依赖相对路径,有时依赖绝对路径。
<?php
const SAVE_PATH = "/var/www/osbs/";
$actual_name = pathinfo(SAVE_PATH."PHPAPI/recording.mp3",PATHINFO_FILENAME);
$original_name = $actual_name;
$extension = pathinfo(SAVE_PATH."PHPAPI/recording.mp3",PATHINFO_EXTENSION);
if (isset($_GET["RecordingUrl"]) && $_GET["RecordingUrl"]) {
if (file_exists(SAVE_PATH."PHPAPI/".$actual_name.".".$extension)) {
$actual_name = find_new_name($original_name, $extension);
}
else {
$actual_name = $original_name;
}
$name = $actual_name.".".$extension;
file_put_contents(SAVE_PATH.'PHPAPI/'.$name, file_get_contents($_GET["RecordingUrl"]));
}
function find_new_name ( $file, $extension ) {
$name = $file.".".$extension;
$i = 0;
while(file_exists(SAVE_PATH."PHPAPI/".$name)){
$new_name = $file.$i;
$name = $new_name.".".$extension;
$i++;
}
return $new_name;
}
?>
Run Code Online (Sandbox Code Playgroud)
我改变了什么:
const SAVE_PATH = "/var/www/osbs/";file_put_contents(这是实际的修复,您需要此处的完整路径)RecordingUrlisset,否则在未设置时您会收到 PHP 警告。