我正在为学校运行一个小型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"];
}
但是我的代码完全跳过了这一步。它仍然没有上传图片,只是转到确认的注册页面。
编辑:我解决了我的问题。看看我的其他答案。它包含我的错误。
答案 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代码中添加了缺失的',并成功上传了图片。