HTML PHP 文件上传 :: 上传的文件没有出现在服务器上
HTML PHP File Upload :: Uploaded File Doesn't Appear On Server
我正在关注 this tutorial,试图建立一个用户可以上传文件的简单网站。我应该说我是 HTML 和 PHP.
的新手
所以我的网络服务器是 Apache2,运行 Ubuntu 16.04。在我服务器的 /var/www/html/
目录中,我有:
me@myServer:/var/www/html$ ls -l
total 36
-rw-r--r-- 1 ph9821 ph9821 1032 Feb 18 12:23 index.html
-rwxr-xr-x 1 ph9821 ph9821 480 Feb 18 12:18 uploader.php
drwxr-xr-x 2 ph9821 ph9821 4096 Feb 18 12:16 uploads
me@myServer:/var/www/html$
我的测试网站非常无聊:
index.html
描述了我的两个按钮,一个是从客户端机器上传文件:
<!DOCTYPE html>
<html>
<body>
<h2>DIY HTML5 File Uploader</h2>
<input type="file" name="file_to_upload" id="file_to_upload">
<hr>
<input type="button" value="Upload To Server" id="upload_file_button">
<script>
document.getElementById('file_to_upload').addEventListener('change', (event) => {
window.selectedFile = event.target.files[0];
});
document.getElementById('upload_file_button').addEventListener('click', (event) => {
uploadFile(window.selectedFile);
});
function uploadFile(file) {
var formData = new FormData();
formData.append('file_to_upload', file);
var ajax = new XMLHttpRequest();
ajax.open('POST', 'uploader.php');
ajax.send(formData);
}
</script>
</body>
</html>
HTML 引用 uploader.php
,即:
<?php
$file_name = $_FILES["file_to_upload"]["name"];
$file_temp_location = $_FILES["file_to_upload"]["tmp_name"];
if (!$file_temp_location) {
echo "ERROR: No file has been selected";
exit();
}
if(move_uploaded_file($file_temp_location, "/var/www/html/uploads/$file_name")){
echo "$file_name upload is complete";
} else {
echo "A server was unable to move the file";
}
?>
PHP 代码应将上传的文件保存在我的 uploads
目录中,如上所示。遗憾的是,当您单击“选择文件”时,select 客户端计算机上的一个文件,然后单击“上传到服务器”,该文件并没有出现在该目录中。事实上,它不会出现在任何地方。上传后,在使用 Unix find
命令时无法识别目标文件名。上传的文件根本没有保存在服务器上。
我遗漏了一些东西。我可以通读上面的代码,大致了解每一行在做什么。但我只是没有经验来发现我哪里出错了。谁能提供任何建议?谢谢。
尝试更改您的 move_uploaded_file()
目录并提供相对于 php 文件的路径
if(move_uploaded_file($file_temp_location, "uploads/$file_name")){
echo "$file_name upload is complete";
}
这应该是您的索引页的 HTML。您不需要使用 JS 来处理文件上传:
<!DOCTYPE html>
<html>
<body>
<h2>DIY HTML5 File Uploader</h2>
<form action="uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" id="uploadFile">
<hr>
<input type="submit">
</form>
</body>
</html>
这应该是 uploader.php 的 PHP 代码:
<?php
$target_dir = "uploads/";
$filename = basename($_FILES["uploadFile"]["name"]);
$target_file = $target_dir . $filename;
if (move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $target_dir . $filename)) {
echo "The file ". $filename . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>
此代码将您上传的文件保存在上传文件夹中。
如果您有任何答案或需要我解释代码,请询问。
我正在关注 this tutorial,试图建立一个用户可以上传文件的简单网站。我应该说我是 HTML 和 PHP.
的新手所以我的网络服务器是 Apache2,运行 Ubuntu 16.04。在我服务器的 /var/www/html/
目录中,我有:
me@myServer:/var/www/html$ ls -l
total 36
-rw-r--r-- 1 ph9821 ph9821 1032 Feb 18 12:23 index.html
-rwxr-xr-x 1 ph9821 ph9821 480 Feb 18 12:18 uploader.php
drwxr-xr-x 2 ph9821 ph9821 4096 Feb 18 12:16 uploads
me@myServer:/var/www/html$
我的测试网站非常无聊:
index.html
描述了我的两个按钮,一个是从客户端机器上传文件:
<!DOCTYPE html>
<html>
<body>
<h2>DIY HTML5 File Uploader</h2>
<input type="file" name="file_to_upload" id="file_to_upload">
<hr>
<input type="button" value="Upload To Server" id="upload_file_button">
<script>
document.getElementById('file_to_upload').addEventListener('change', (event) => {
window.selectedFile = event.target.files[0];
});
document.getElementById('upload_file_button').addEventListener('click', (event) => {
uploadFile(window.selectedFile);
});
function uploadFile(file) {
var formData = new FormData();
formData.append('file_to_upload', file);
var ajax = new XMLHttpRequest();
ajax.open('POST', 'uploader.php');
ajax.send(formData);
}
</script>
</body>
</html>
HTML 引用 uploader.php
,即:
<?php
$file_name = $_FILES["file_to_upload"]["name"];
$file_temp_location = $_FILES["file_to_upload"]["tmp_name"];
if (!$file_temp_location) {
echo "ERROR: No file has been selected";
exit();
}
if(move_uploaded_file($file_temp_location, "/var/www/html/uploads/$file_name")){
echo "$file_name upload is complete";
} else {
echo "A server was unable to move the file";
}
?>
PHP 代码应将上传的文件保存在我的 uploads
目录中,如上所示。遗憾的是,当您单击“选择文件”时,select 客户端计算机上的一个文件,然后单击“上传到服务器”,该文件并没有出现在该目录中。事实上,它不会出现在任何地方。上传后,在使用 Unix find
命令时无法识别目标文件名。上传的文件根本没有保存在服务器上。
我遗漏了一些东西。我可以通读上面的代码,大致了解每一行在做什么。但我只是没有经验来发现我哪里出错了。谁能提供任何建议?谢谢。
尝试更改您的 move_uploaded_file()
目录并提供相对于 php 文件的路径
if(move_uploaded_file($file_temp_location, "uploads/$file_name")){
echo "$file_name upload is complete";
}
这应该是您的索引页的 HTML。您不需要使用 JS 来处理文件上传:
<!DOCTYPE html>
<html>
<body>
<h2>DIY HTML5 File Uploader</h2>
<form action="uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" id="uploadFile">
<hr>
<input type="submit">
</form>
</body>
</html>
这应该是 uploader.php 的 PHP 代码:
<?php
$target_dir = "uploads/";
$filename = basename($_FILES["uploadFile"]["name"]);
$target_file = $target_dir . $filename;
if (move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $target_dir . $filename)) {
echo "The file ". $filename . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>
此代码将您上传的文件保存在上传文件夹中。 如果您有任何答案或需要我解释代码,请询问。