下面的代码有什么问题吗?因为我可以毫无错误地单击该按钮,但文件不会保存到"public_html/resume/"
中
$uploadOk = true;
if(isset($_FILES)) {
$folder_dir = "public_html/resume/";
$base = basename($_FILES['resume']['name']);
$resumeFileType = pathinfo($base, PATHINFO_EXTENSION);
$file = uniqid() . "." . $resumeFileType;
$filename = $folder_dir .$file;
if(file_exists($_FILES['resume']['tmp_name'])) {
if($resumeFileType == "pdf") {
if($_FILES['resume']['size'] < 500000) { // File size is less than 5MB
move_uploaded_file($_FILES["resume"]["tmp_name"], $filename);
} else {
$_SESSION['uploadError'] = "Wrong Size. Max Size Allowed : 5MB";
header("Location: edit-profile.php");
exit();
}
} else {
$_SESSION['uploadError'] = "Wrong Format. Only PDF Allowed";
header("Location: edit-profile.php");
exit();
发布于 2018-08-15 23:13:27
不幸的是,PHP代码的每一行都需要改进。
错误的原因是/public_hml/
不是绝对文件路径,所以它被解释为相对路径。寻找<current directory>/public_html/resume/
,这几乎肯定是无效的。
下面我已经为你解决了几乎所有的问题。
$uploadOk = false; // Always assume false until proven ok.
if(!empty($_FILES['resume'])) {
// Check errors
if($_FILES['resume']['error'] === 0){
$folder_dir = $_SERVER['DOCUMENT_ROOT']."/resume/"; // use absolute path.
// $base = basename($_FILES['resume']['name']); //worthless.
// $resumeFileType = pathinfo($base, PATHINFO_EXTENSION);
$finfo = new finfo();
$fileMimeType = $finfo->file($_FILES['resume']['tmp_name'], FILEINFO_MIME_TYPE);
if(strtolower($fileMimeType) !== 'applicaton/pdf'){
$_SESSION['uploadError'] = "Wrong Format. Only PDF Allowed";
header("Location: edit-profile.php");
exit();
}
$file = uniqid("",true) . ".PDF"; // make sure unique is unique.
$filename = $folder_dir .$file;
//if(file_exists($_FILES['resume']['tmp_name'])) {
// if($resumeFileType == "pdf") {//worthless.
if($_FILES['resume']['size'] > 500000) { // File size is less than 5MB
$_SESSION['uploadError'] = "Wrong Size. Max Size Allowed : 5MB";
header("Location: edit-profile.php");
exit();
}
move_uploaded_file($_FILES["resume"]["tmp_name"], $filename);
}
else {
//There were file upload errors. Handle here.
}
}
来源
https://stackoverflow.com/questions/51859622
复制相似问题