我试图弄清楚文件上传系统如何在PHP中运行。我的代码是:
if(isset($_FILES['profile_pic'])){
$allowed_ext= array('jpg','jpeg','png','gif');
$file_name = $_FILES['profile_pic']['name'];
$file_ext = strtolower(end (explode('.',$file_name)));
$file_size = $_FILES['profile_pic']['size'];
$file_tmp = $_FILES['profile_pic']['tmp_name'];
if(in_array($file_ext, $allowed_ext) === false || $file_size > 2000000){
$display_block = 'display:block !important';
$pic_errors ='<p>* File format JPG, JPEG, GIF or PNG</p> <p>* Smaller 1Mb</p>';
} else {
move_uploaded_file($file_tmp, '/members/');
echo 'uploaded..';
}
}//if(isset($_FILES['profile_pic']))
拥有权限一切似乎都没问题。
我得到的错误是:
警告:move_uploaded_file(/ members /)[function.move-uploaded-file]:无法打开流:第116行/home/a6671212/public_html/settings.php中的目录
如何解决此错误?
感谢所有人..
据我所知我有2个问题..
正如@Prison所写的.. move_uploaded_file($ file_tmp,'/ members /'); - 我没有在/ members /
正如@Ketan Patel所写,
如果可以这样说,该函数应该改为另一种格式。
move_uploaded_file($ file_tmp,“/ members / $ file_name”); - 双引号......
它工作!!!!!!!!谢谢YOUUU !!!
答案 0 :(得分:3)
您必须定义文件名,例如:
move_uploaded_file($file_tmp, 'members/filename.ext');
或者,在您的情况下:
move_uploaded_file($file_tmp, 'members/'.$file_name);
另外,是/ members /目录(在你的文件系统的根目录下)?如果不是,请使用成员目录的相对路径或绝对路径。编辑:判断错误,我猜/ members /是一个目录,所以这应该工作正常:
move_uploaded_file($file_tmp, '/members/'.$file_name);
不要忘记先检查文件是否存在,否则move_uploaded_file
将覆盖旧文件。
答案 1 :(得分:0)
函数move_upload_file()
的作用类似于unix命令mv
。您必须指定目标文件路径。
将您的代码行更改为此代码,它应该有效:
move_uploaded_file($file_tmp, './members/' . $file_name);
答案 2 :(得分:0)
尝试更改
move_uploaded_file($file_tmp, '/members/');
到
move_uploaded_file($file_tmp, 'members/' . $filename);
(删除第一个斜杠并添加文件名)
答案 3 :(得分:0)
你使用这个功能
move_uploaded_file($tmp_name, "$uploads_dir/$name");
答案 4 :(得分:0)
move_uploaded_file($file_tmp, '/members/' . $fileName);
答案 5 :(得分:0)
尝试更改
move_uploaded_file($ file_tmp,'/ members /'); 在 move_uploaded_file($ file_tmp,'members /'+ $ filename);
并确保使用chamod设置权限。 chmod -R 0755成员。还要确保您的应用程序可以访问$ file_temp位置和读/写permision