我正在创建一个非常简单的管理面板,我希望能够上传一个文件,但这将是唯一一个具有静态名称的文件。我有这个代码:
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="512000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
<?php
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename(uploadedfile.jpg);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
这是有效的,但文件是以"uploadedfilejpg"的名称上传的,所以并没有扩展名。如何修复此问题以添加扩展?我只想上传jpg文件并覆盖旧文件。
您的PHP脚本在第4行出现错误。您得到了basename(uploadedfile.jpg)
,这是一个错误。我想你是想写basename('uploadedfile.jpg')
,但由于在文件名上使用basename
只会返回文件名(感谢@CBroe注意到这一点),所以你最好只使用'uploadedfile.jpg'
。
它应该是这样的:
<?php
$uploaddir = 'uploads/';
$uploadfile = $uploaddir . 'uploadedfile.jpg';
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.n";
} else {
echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
替换此行:
$uploadfile = $uploaddir . basename('uploadedfile.jpg');
带有:
$uploadfile = $uploaddir . basename('uploadedfile.jpg'). '.jpg';