[英]What are the reasons of failing move_uploaded_file() in PHP when the website is hosted online?
我已經編寫了一個使用 PHP 上傳圖像的代碼,它在我的本地主機服務器上運行良好,但是當我將網站上傳到在線服務器時,函數 move_uploaded_file() 返回 false。
這是我的 HTML 代碼
<input type="file" name="selectImg" id="selectImg" accept="image/jpg, image/jpeg" style="display: none;">
<label for="selectImg" class="btn btn-primary" style="border-radius: 29px; outline: none;" > Chose a Image</label>
<button class="btn btn-success" style="border-radius: 29px;outline: none;" id="upload">Upload</button>
發送數據的 AJAX 函數
function sendData(name,pid,file){
let data = new FormData();
data.append('file',file);
data.append('pid',pid);
data.append('name',name);
console.log(data);
$.ajax({
type: "post",
url: "upload.php",
data :data,
processData: false,
contentType: false,
success: function(data) {
// if(data=='UPLOADED SUCCESSFULLY'){
// alert(data);
// location.reload();
// }
alert(data);
}
});
}
這是我的 JavaScript 代碼
uploadBtn.addEventListener("click",function(){
if(file){
let fName = file['name'].split(".");
// console.log(fName);
if(fName[1] == "jpeg" || fName[1] == "jpg"){
let pid = document.getElementById('pID').value;
let name = file['name'];
let url = window.location.href.split("=");
sendData(name,pid,file);
}else{
alert('Please Select a jpeg/jpg file');
}
}else{
alert('Please Select an image');
}
});
這是 PHP 代碼
if(isset($_POST['pid'])){
$pid = $_POST['pid'];
$imgFile = $_FILES['file'];
$iName = $_POST['name'];
$loc = $_FILES['file']['tmp_name'];
$path = "../assets/uploads/".basename($_FILES['file']['name']);
$serverPath = "assets/uploads/".$iName;
$size = filesize($loc);
if(move_uploaded_file($loc,$path)){
$pathquery = "INSERT INTO `images` (`path`, `pid`, `status`) VALUES ('$serverPath', '$pid', 'ACTIVE');";
echo $pathquery;
$sendPathQuery = mysqli_query($conn,$pathquery);
}else{
echo "File Not Uploaded";
}
}else{
echo "FILE NOT UPLOADED !!!";
}
上面的代碼在本地主機服務器上完美運行,但上傳時 move_uploaded_file() 函數返回 false。
檢查 Web 服務器是否具有寫入/assets/uploads/
目錄的權限
或者添加這個以獲得全面的答案:
$moved = move_uploaded_file($loc,$path);
if( $moved ) {
echo "Successfully uploaded";
} else {
echo "Not uploaded because of error #".$_FILES["file"]["error"];
}
如果 from 不是有效的上傳文件,則不會發生任何操作,並且 move_uploaded_file() 將返回 false。
如果 from 是一個有效的上傳文件,但由於某種原因無法移動,則不會發生任何動作,並且 move_uploaded_file() 將返回 false。
檢查文件和目錄的權限。 看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.