文件上传表单未上传

时间:2019-02-06 10:09:59

标签: php forms file upload

我正在为学校运行一个小型PHP项目,并且正在尝试建立一个表单,用户可以在其中上传个人资料图片。

我尝试使用W3Schools,但是无法使其与我的代码一起使用。 这是该页面的链接:https://www.w3schools.com/php/php_file_upload.asp

首先,我声明一些变量:

$target_dir = "profilepic/";
$target_file = $target_dir . basename($_FILES["image_to_upload"]["name"]);

然后将上载的文件移到正确的目录。注册后,可以使用以下方法进行检查:

move_uploaded_file($_FILES["image_to_upload"]["tmp_name"], $target_file);

我已经在表格中设置了参数,因此用户只能选择图像文件:

<form action='index.php' method='post' enctype='multipart/form-data'>
    <input type= 'text' name='leerlingid' placeholder='Username' required>
    <input type= 'text' name='mail' placeholder='Email Address' required>
    <input type= 'password' name='wachtwoord' placeholder='Password' required>
    <input type= 'password' name='wachtwoordcheck' placeholder='Password confirmation' required>
    <input type= 'text' name='voornaam' placeholder='First name' required>
    <input type= 'text' name='achternaam' placeholder='Last name' required>
    <select name='sekse'>
        <option value='Man'>Man</option>
        <option value='Vrouw'>Vrouw</option>
    </select>
    Profile picture:
    <INPUT id='image_to_upload' NAME=image_to_upload' TYPE='file' accept='image/x-png,image/gif,image/jpeg' required>
    <input type='submit' name='reg' value='Register'>

    </form>

wachtwoord是密码
leerlingid是用户名
voornaam是名字
achternaam为姓氏
性别是性爱

该项目为荷兰语,为荷兰人的名字感到抱歉。

该表格可以正常运行,并且出现0错误,但是注册用户后,没有文件上传。 我使用的是学校服务器,但如果我没错,则$ target_dir应该从放置form.php的位置开始。

我不知道ini文件中的file_uploads = On,但是我可以从FileZilla上传我的文件,所以我以为是。 (尽管我无法访问该文件,所以我无法检查或更改该文件。)

如果有人可以指出为什么它不起作用,那将是很大的帮助。

编辑:

我现在也尝试了以下代码:

                    $upload = move_uploaded_file( $_FILES["image_to_upload"]["tmp_name"], $target_file );
                if( $upload ) {
                    header("Location: good.php");
                } else {
                    header("Location: error.php");
                //echo "Error:" . $_FILES["image_to_upload"]["error"];
                }

但是我的代码完全跳过了这一步。它仍然没有上传图片,只是转到确认的注册页面。

编辑:我解决了我的问题。看看我的其他答案。它包含我的错误。

2 个答案:

答案 0 :(得分:1)

您是否已确认将接收文件的文件夹具有写权限?

将代码编辑如下:

$upload = move_uploaded_file( $_FILES["image_to_upload"]["tmp_name"], $target_file );

if( $upload ) {
  echo "Success!";
} else {
  echo "Error:" . $_FILES["image_to_upload"]["error"];
}

这将返回所有错误。

答案 1 :(得分:1)

我在@ 04FS的帮助下解决了该问题。我将$ target_file变量中的“名称”错误地更改为“ image_to_upload”,然后将其更改回“名称”,并在工作的HTML代码中添加了缺失的',并成功上传了图片。