我有这个PHP代码:
if (isset($_FILES["ufile"]["name"])){ //if file was chosen
$allowed = array('pdf');
$filename = $_FILES['ufile']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) { //only allowed filetype is PDF
echo 'Nevybral jste soubor PDF. <a style="color:blue; text-decoration:underline;" onclick="window.history.back()">Vraťte se na předchozí stránku.</a>';
}
else { //if everything OK, proceed to save the file
$jmeno= "pdf".date("dmY").".pdf"; //for example pdf17052014.pdf (works fine)
$path="depository/".$jmeno; //depository has chmod 777
if(move_uploaded_file($_FILES['ufile']['tmp_name'], $path)){ //if moved to depository, echo -all fine-
echo "<font color=green>The file was uploaded</font>";
include "friends.php";
mysql_connect("$Dhost", "$Duser", "$Dpass");
mysql_select_db("$Dbname");
$filtr = mysql_real_escape_string(br2nl($_POST["nadpis"]));
$filtrB = mysql_real_escape_string(br2nl($_POST["zprava"]));
$provedu="insert into usneseni (autor, cas, nazev, text, odkaz) values ('".$_SESSION["jmeno"]."',".time().",'".$filtr."', '".$filtrB."', '".$jmeno."')";
$vysledek=mysql_query("$provedu") or die(mysql_error()." <font color=red>Nepodařilo se zapsat do databáze</font>");
mysql_close();
}
else {
echo $_FILES['ufile']['error'];
}
}
}
当我运行它时,会显示&#34;文件已上传&#34; 。然后我将其名称写入数据库,这很好。但是当我查看&#34;存储库&#34;时,文件就不存在了。存储库有chmod 777.代码没有显示任何错误。我不知道为什么会这样。
答案 0 :(得分:2)
目录存放库与主脚本位于同一文件夹中,还是与您提交给我们的上传脚本位于同一文件夹中?
你如何确定现在有上传文件? (在某些ftp客户端,您必须更新目录以查看新文件。)
我拿了你的脚本并在我的服务器上使用它。这个对我有用。我使用@date
来抑制警告,因为当没有正确指定时区时,它经常会抛出错误。另一种方法是使用 date_default_timezone_set(UTC);//Use your own timezone here.
。只要date抛出错误,您的文件字符串可能无法正确构建。
你试过var_dump($_FILES);
吗?