簡體   English   中英

move_uploaded_file()無法使用有效的['tmp_name']

[英]move_uploaded_file() not working with valid ['tmp_name']

這讓我感到困惑。 出於某些奇怪的原因,move_uploaded_file()不會將文件放入目錄,但是會返回有效的tmp_name和名稱。 因此,在這種情況下,$ file始終=為false。

無論如何,有人可以指出這段代碼有問題嗎? 這將不勝感激。

    <?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];

if ($name) {
    $directory = $name;
    $userid = $_SESSION['userid'];
    $type = "logo";

    $file = move_uploaded_file($tmpname, $directory);

    if ($file == true) {    
    mysql_query("INSERT INTO usercontent
    (`userid`, `type`, `url`) VALUES
    ('$userid', '$type', '$directory')");
    echo 'Uploaded';
    echo "<img src='".$directory."'/>";
    } else {
    echo 'There was an error moving the file.';
    }
}


?>

您也沒有檢查$_FILES['yourlogo']['error']

這是您檢查上傳文件的內容:

  1. 檢查$_FILES['yourlogo']['error'] 如果它是UPLOAD_ERR_OK (0),則繼續。
  2. 檢查is_uploaded_file($_FILES['yourlogo']['tmp_name']) 如果失敗,PHP將不知道出了什么問題,但是它不信任該文件。
  3. 組裝目標路徑。
  4. 使用move_uploaded_file()

如果move_uploaded_file()錯誤,則PHP無法在目標位置寫入文件。 這通常是無效的路徑,或者沒有權限。

請注意, $_FILES['yourlogo']['name']是文件在上傳者PC上的名稱。 它不應包含任何路徑信息。

<?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];
if ($name) {
    $directory = $name;
    $userid = $_SESSION['userid'];
    $type = "logo";
    $file = move_uploaded_file($tmpname, "path of ur directore/".$directory);
    if ($file == true) {    
    mysql_query("INSERT INTO usercontent
    (`userid`, `type`, `url`) VALUES
    ('$userid', '$type', '$directory')");
    echo 'Uploaded';
    echo "<img src='".$directory."'/>";
    } 
   else 
   {
    echo 'There was an error moving the file.';
    }
}


?>

暫無
暫無

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

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