【问题标题】:File upload form is not uploading文件上传表单未上传
【发布时间】:2019-06-30 06:02:03
【问题描述】:

我正在为学校运行一个小型 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 是姓氏
sekse 是性

这个项目是荷兰语的,所以很抱歉荷兰人的名字。

表单运行正确,我得到 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"];
                }

但我的代码完全跳过了这一点。还是不上传图片,直接进入确认注册页面。

编辑:我解决了我的问题。看看我的另一个回答。它包含我的错误。

【问题讨论】:

  • “我不知道 ini 文件中的 file_uploads = On” - 然后找出 - ini_get 或 phpinfo。 “但我可以从 filezilla 上传我的文件,所以我认为是这样” - 这两件事完全没有任何关系。
  • "我已经在表单中设置了参数,所以用户只能选择图像文件" 注意!客户端的代码很容易被篡改,如果您不检查服务器端的文件(在您的 php 代码中),黑客可能会上传恶意代码来接管您的服务器。
  • 您的文件上传字段的名称是not image_to_upload。修复您的 HTML。
  • 嗯,谢谢,我会试试的,就像我说的我不确定,所以谢谢你的澄清。 @Null 它仅适用于学校项目,因此除非我的老师想要破解我的网站,否则这并不是真正的问题,因为它不是作业的一部分,我只是想要更高的成绩。谢谢,我没看到
  • To NAME='image_to_upload', or NAME="image_to_upload", or NAME=image_to_upload … 只是 not 在末尾带有一个属性值分隔符,在从 - 开始,因为这目前使它成为属性值的一部分

标签: php forms file upload


【解决方案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"];
}

这将返回所有错误。

【讨论】:

  • 我自己用filezilla制作了这个文件夹,不过我还是会试试看,因为另一个人告诉我filezilla与php无关
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多