-1

我试图弄清楚文件上传系统如何在 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 中的目录

如何修复此错误?

谢谢大家..

据我了解,我有两个问题..

  1. 正如@Prisoner 所写.. move_uploaded_file($file_tmp, '/members/'); - 我没有在 /members/ 后面写文件名

  2. 正如@Ketan Patel 所写,

如果我可以这样说,该功能应该更改为另一种格式。

move_uploaded_file($file_tmp, "/members/$file_name"); - 双引号...

有效!!!!!!!!谢谢你!!!

4

6 回答 6

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会覆盖旧文件。

于 2012-11-09T13:08:19.913 回答
0

该函数的move_upload_file()工作方式类似于 unix 命令mv。您必须指定目标文件路径。

将您的代码行更改为此,它应该可以工作:

move_uploaded_file($file_tmp, './members/' . $file_name);
于 2012-11-09T13:08:43.607 回答
0

尝试改变

move_uploaded_file($file_tmp, '/members/');

move_uploaded_file($file_tmp, 'members/' . $filename);

(删除第一个斜杠并添加文件名)

于 2012-11-09T13:09:11.177 回答
0

你使用这个功能

  move_uploaded_file($tmp_name, "$uploads_dir/$name");
于 2012-11-09T13:10:34.887 回答
0
move_uploaded_file($file_tmp, '/members/' . $fileName);
于 2012-11-09T13:10:35.927 回答
0

尝试改变

move_uploaded_file($file_tmp, '/members/'); 在 move_uploaded_file($file_tmp, 'members/' + $filename);

并确保使用 chamod 设置权限。chmod -R 0755 成员。还要确保您的应用程序可以访问 $file_temp 位置和读/写权限

于 2012-11-09T13:16:39.933 回答