簡體   English   中英

托管服務上 php 中的文件上傳錯誤

[英]File upload error in php on hosting service

伙計們,我今天非常沮喪,因為我在 php 中的文件錯誤

它沒有將文件上傳到我的文件夾,也沒有錯誤消息

實際上我正在創建一個聊天網站,所以我已經完成了它,但問題出在我的服務器上它無法正常工作..

我的代碼

<script type="text/javascript">
<?php
$upload_dir = $_SERVER['DOCUMENT_ROOT'];
if (isset($_GET['room']) && isset($_GET['room']) ) {
    if (isset($_FILES['img'])) {
        require 'db_connect.php';

        $room = mysqli_real_escape_string($conn,$_GET['room']);
        $room = htmlentities($room);

        $name = mysqli_real_escape_string($conn,$_POST['hidden']);
        $name = htmlentities($name);
        
        $img = $_FILES['img'];
  
        $imgName = $img['name'];
        $imgAddr = $img['tmp_name'];
        $imgErr = $img['error'];
        $imgSize = $img['size'];
  
        if ($imgErr == 0) {
    
            if ($imgSize<=2000000) {
                $fileExt = explode('.',$imgName);
                $fileExt_check = end($fileExt);
                $allowedExts = array('png','jpg','jpeg','gif');
    
                if (in_array($fileExt_check,$allowedExts)) {
                    if(copy($imgAddr,$upload_dir.'/ImgsSended/'.$imgName)){
                        date_default_timezone_set('Asia/Kolkata');
                        $date = date("h:i A d F - Y");
                        
                        $sql = "INSERT INTO `myMessages` ( `msg_type` , `msg`, `room`, `name`, `stime`) VALUES ('file','imgsSended/$imgName', '$room', '$name', '$date')";
                        $res = mysqli_query($conn,$sql);
                        if ($res) {
                            echo '
                                alert("Image Sended Successfully");
                                location.href = "rooms.php?roomname='.$room.'";
                            ';
                        }
                    }else {
                        echo '
                            alert("Some Error Occurred While Sending Your Image");
                            location.href = "rooms.php?roomname='.$room.'";
                        ';
                    }
                } else {
                    echo '
                        alert("This file is not supported - \n Only\n jpg \n png\n jpeg\n and\n gif \are supported");
                        location.href = "rooms.php?roomname='.$room.'";
                    ';
                }
                mysqli_close($conn);
            }else{
                echo '
                    alert("Your File Size is Too Big");
                    location.href = "rooms.php?roomname='.$room.'";
                ';
            }
        }else{
            echo '
                alert("your File is currpted");
                location.href = "rooms.php?roomname='.$room.'";
            ';
        }
    }else{
        echo '
            alert("No Image Selected");
            location.href = "rooms.php?roomname='.$room.'";
        ';
    }
} else{
    header('location: index.php');
}
?>
</script>

ImgsSended 是我要上傳圖片的文件夾名稱

我在這里是來自我的文件上傳表單的此頁面中的發布請求

我的表格

     <form action="sendFile.php?room=<?php echo $roomname?>" method="post" enctype="multipart/form-data">
    <input type="hidden" name="hidden" id="nameHidden">
    <input type="file" name="img" id="img">
    <button class="btn btn-outline-success my-2" name="sendFile">Send</button>
 </form>

您應該學習如何調試 PHP 代碼。

正如您所說,您的copy()move_uploaded_file()條件始終為假,因此 else 條件生效。 發生這種情況是因為如果無法移動文件,則copy()move_uploaded_file()返回 false。 在大多數情況下會發生這種情況,因為給定的文件無效。

在這種情況下,您可以調試數據。 只需測試,您使用的內容包含哪些數據。 文件名有效嗎? 目的地有效嗎? 一切都可以訪問嗎?

echo "<pre>";
var_dump($imgAddr, $upload_dir . '/ImgsSended/' . $imgName);
echo "</pre>";

現在您可以看到您正在嘗試執行的操作的內容。 哪些數據包含$imgAddr變量。 它是有效的文件名嗎? 什么包含目的地? 它是現有目錄的有效路徑嗎? PHP 可以訪問這個目錄嗎?

您可以使用以下代碼行測試是否存在。

is_dir($upload_dir . '/ImgsSended/');

如果返回true ,則給定目錄存在,這不可能是錯誤的原因。

它總是關於調試。 必須閱讀和理解錯誤。 它們包含對您有用的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM