簡體   English   中英

如何獲取從用戶到我的數據庫到特定登錄用戶的上傳文件?

[英]How can I get an upload file from user to my database to specific user logged in?

我下面有一個功能,它是一個上傳圖片功能,允許用戶上傳自己的圖片。 它旨在將圖片上傳到目錄,然后存儲在數據庫中(無論哪個用戶登錄),並且還應為用戶顯示。 對我來說似乎正在發生的事情是,它以“數組”的形式插入數據庫中,但不確定是否可以將其鏈接到我登錄的UserID上?

參見下面的代碼:

error_reporting(E_ALL);
ini_set('display_errors', 1);
include("dbConnect.php");

if(isset($_POST['submit'])) {
    $file = $_FILES['file'];

    $fileName = $_FILES['file']['name'];
    $fileTmpName = $_FILES['file']['tmp_name'];
    $fileSize = $_FILES['file']['size'];
    $fileError = $_FILES['file']['error'];
    $fileType = $_FILES['file']['type'];

    $fileExt = explode('.', $fileName);
    $fileActualExt = strtolower(end($fileExt));

    $allowed = array(
        'jpg',
        'jpeg',
        'png',
        'pdf'
    );
    if(in_array($fileActualExt, $allowed)) {
        if($fileError === 0) {
            if($fileSize < 1000000) {
                $fileNameNew = uniqid('', true) . "." . $fileActualExt;
                $fileDestination = 'uploads/' . $fileNameNew;
                move_uploaded_file($fileTmpName, $fileDestination);
                header("Location: myProfile.php?successCode=1");
                echo "<img src=" . $fileDestination . " height=200 width=300/>";
            } else {
                echo "your file too big";
            }
        } else {
            echo "There was error uploading file";
        }
    } else {
        echo "you cant upload files of this type";
    }
    // Insert record
    $stmt = $conn->prepare("INSERT into Profile(ProfilePicture) values('" . $file . "')");
    $stmt->execute();
}

問題是您正在將數組保存到數據庫中。 您不僅可以將圖片保存到數據庫中,還可以將PATH保存到圖片中。

$stmt = $conn->prepare("UPDATE Profile SET ProfilePicture='{$fileName}' WHERE UserID='{$_SESSION['currentUserID']}'");

上面的代碼僅保存文件名,因此,如果您的圖像目錄永不更改,這將足夠好,您可以在代碼中的其他位置引用實際目錄。

- “我要代碼在其中插入UserID = UserID的ProfilePicture嗎?” -關於評論的內容,我更新了答案,向您展示了如何更新其中UserID='$_SESSION['currentUserID']'

注意:您應該考慮切換到帶有參數化變量的 預處理語句 ,因為當前使用的方法可能容易受到SQL Injection的攻擊。

暫無
暫無

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

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