我正在使用此脚本上传文件。自从我第一次尝试以来,我没有对文件类型进行任何检查。我正在使用Ubuntu并在php.ini文件中将文件上传设置为'on'。但我仍然无法上传文件。
<?php
if(isset($_POST['send']))
{
$uploaddir = "/home/harbhag/Desktop/";
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo $uploadfile;
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
}
?>
<html>
<form enctype="multipart/form-data" action="upload.php" method="POST">
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
<!-- Name of input element determines name in $_FILES array -->
Send this file: <input name="userfile" type="file" />
<input type="hidden" name="send" value="send" />
<input type="submit" value="Send File" />
</form>
</html>
答案 0 :(得分:4)
您应该使用$uploaddire
和$uploadfile
两个变量来为文件创建有效路径。
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$uploadfile)) {
还要注意要点
upload_max_filesize
(默认值为2MB)限制答案 1 :(得分:1)
使用move_uploaded_file
时要格外小心。它不会在partitios之间移动文件,而hostng公司可能会将你的上传临时目录放在你的php文件的其他地方。
使用它是一个更安全的选择:
$tempname = $_FILES['userfile']['tmp_name'];
if (is_uploaded_file($tempname)) {
copy($tempname, $uploadfile);
}