我需要帮助。
我使用move_uploaded_file()方法将图像上传到我的服务器,该方法返回true,因为在我的服务器上的指定目录中找不到上传的文件。我已经彻底检查过,在服务器上搜索文件以防上传到另一个目录,检查了目录上的权限,但一切看起来都很完美。我真的不知道出了什么问题。 这是代码的片段。
$uploaddir = './upload_dir/';
$allowed = array('gif', 'png', 'jpg','bmp');
$filename = $_FILES['uploadfile']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$data = array();
if (!in_array($ext, $allowed)) {
$data['status'] = 'error';
$data['error_message'] = 'Invalid file type';
}
else{
$file_name = time() . '_' . uniqid() . '_' . basename($_FILES['uploadfile']['name']);
$file_name = preg_replace('/[^a-z0-9_\.\-]+/i', '_', $file_name);
$file = $uploaddir . $file_name;
if (isset($_FILES['uploadfile']['tmp_name']) && move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) {
$data['status'] = 'success';
$data['file_name'] = $file_name;
} else {
$data['status'] = 'error';
}
echo json_encode($data);
}
提前致谢。
答案 0 :(得分:1)
出于安全原因检查here
,请使用is_uploaded_file($_FILES['uploadfile']['tmp_name'])
代替isset($_FILES['uploadfile']['tmp_name'])
对于上传目录,请使用$uploaddir = $_SERVER['DOCUMENT_ROOT'] . "/upload_dir/";
代替$uploaddir = './upload_dir/';
来获取绝对路径而不是相对路径。
答案 1 :(得分:0)
谢谢大家。我给了该文件夹错误的权限。这似乎是我自己的问题。