PHP中的文件上传和下载
下面的代码有问题吗?因为我可以毫无错误地单击按钮,但文件不会保存到PHP中的文件上传和下载,php,Php,下面的代码有问题吗?因为我可以毫无错误地单击按钮,但文件不会保存到“public\u html/resume/” $uploadOk=true; 如果(isset($\u文件)){ $folder_dir=“public_html/resume/”; $base=basename($_文件['resume']['name']); $resumeFileType=pathinfo($base,pathinfo_扩展名); $file=uniqid()。“..$resumeFileType; $fi
“public\u html/resume/”
$uploadOk=true;
如果(isset($\u文件)){
$folder_dir=“public_html/resume/”;
$base=basename($_文件['resume']['name']);
$resumeFileType=pathinfo($base,pathinfo_扩展名);
$file=uniqid()。“..$resumeFileType;
$filename=$folder_dir.$file;
如果(文件u存在($\u文件['resume']['tmp\u name']){
如果($resumeFileType==“pdf”){
如果($_FILES['resume']['size']<500000){//文件大小小于5MB
移动上传的文件($文件[“恢复”][“tmp文件名”],$文件名);
}否则{
$\u会话['uploadError']=“大小错误。允许的最大大小:5MB”;
标题(“位置:editprofile.php”);
退出();
}
}否则{
$\u会话['uploadError']=“格式错误,仅允许PDF”;
标题(“位置:editprofile.php”);
退出();
不幸的是,PHP代码的每一行都应该改进
错误的原因是/public\u hml/
不是一个绝对的文件路径,因此PHP将其解释为相对路径。并且查找几乎肯定无效的/public\u 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.
}
}
来源
}
在代码中,但也要检查您是否有权访问public\u html/resume
。这更像是一个权限问题。您做了什么调试?是$file
您期望的吗?是$filename
您期望的吗?如果(文件存在($\u FILES['resume']['tmp\u name']),您是否进入){
check?当路径文件夹为空时,单击“上载”时未发现错误消息添加错误处理:
$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.
}
}