我已经关注了一个小教程,以便我可以将文件上传到服务器,这个文件应该移动到img / profile /然后从那里读取。
我的树就像这样(img和profile是文件夹):
updatepp.php 图标profile.png img和img里面的个人资料
我进入了我的文件夹并检查了权限,它说我可以写入此文件。
updatepp.php内部是profilepic上传的fcode
if(isset($_FILES['profile']) === true){
if(empty($_FILES['profile']['name']) === true){
echo 'please choose a file';
}else{
//checks
$allowed = array('jpg', 'jpeg', 'png', 'gif');
$file_name = $_FILES['profile']['name'];
$file_extn = strtolower(end(explode('.', $file_name)));
$file_temp = $_FILES['profile']['tmp_name'];
if(in_array($file_extn, $allowed) === true){
$file_path = 'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;
if(move_uploaded_file($file_temp, $file_path)){
echo "succes " . $file_path;
$result = $db->prepare("UPDATE users SET profile=:profile WHERE user_id=:user");
$result->bindParam(':profile', $file_path);
$result->bindParam(':user', $user);
$result->execute();
}else{
echo "failure";
}
}else{
echo 'incorrect file type. Allowed: ';
echo implode(', ', $allowed);
}
}
}
文件上传到数据库,屏幕上显示消息成功$file_path
。但是,当我查看文件夹时,我发现该文件尚未移动。
我在安装了LAMP堆栈的虚拟ubuntu客户端上托管这个,我在主机和虚拟机之间使用共享文件夹。
我认为文件夹不存在,但很明显。
答案 0 :(得分:1)
来自文档:
$_SERVER['DOCUMENT_ROOT']
是项目执行所在的文档根目录。如中所定义 服务器的配置文件。
如果您的上传文件目的地在DOCUMENT_ROOT
之内,那么您可以将路径声明为:
$file_path = $_SERVER['DOCUMENT_ROOT'].'img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;
你也可以尝试这样:
$file_path = '../img/profile/' . substr(md5(time()),0,10) . '.' . $file_extn;