我正在關注
描述了我的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目錄中,如上所示。遺憾的是,當您單擊“選擇檔案”時,在客戶端計算機上選擇一個檔案,然后單擊“上傳到服務器”,該檔案不會出現在該目錄中。事實上,它并沒有出現在任何地方。上傳后,我在使用 Unixfind命令時找不到目標檔案名。上傳的檔案根本沒有保存在服務器上。
我錯過了一些東西。我可以通讀上面的代碼,大致了解每一行在做什么。但我只是沒有經驗來發現我哪里出錯了。任何人都可以提供任何建議嗎?謝謝你。
uj5u.com熱心網友回復:
這應該是您的索引頁的 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.";
}
?>
此代碼將您上傳的檔案保存在上傳檔案夾中。如果您有任何答案或需要我解釋代碼,請詢問。
uj5u.com熱心網友回復:
嘗試更改您的move_uploaded_file()目錄并提供相對于 php 檔案的路徑
if(move_uploaded_file($file_temp_location, "uploads/$file_name")){
echo "$file_name upload is complete";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430404.html
下一篇:Flutter檔案寫入程序
