簡體   English   中英

php:目錄的名稱+文件的名稱

[英]php: name of the directory + name of the file

我正在使用PHP上傳文件的表單。 這些是我的投入:

 $file_name = filter_input(INPUT_POST, 'file_name');
 $file = filter_input(INPUT_POST, 'file');
 $file_date = filter_input(INPUT_POST, 'premiere_date');
 $file_director = filter_input(INPUT_POST, 'director_name');

這就是我不知道我做錯了什么:

if ((filter_input(INPUT_POST, 'submit'))) { //if submit button is clicked
      $target_dir = "uploads/";
    $target_file = $target_dir . basename($_FILES["file"]["file_name"]);
     move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);    
     echo $target_file;
}

這是HTML

 <form id="savingFiles" action="upload.php" method="post" enctype="multipart/form-data">
            <label>Name of the file:</label>
            <input type="text" name="file_name" value="<?php if (isset($row['file_name'])) {
    echo $row['file_name'];
} ?>"/>
            <br>
              <label>Select your file:</label> 
              <input type="file" name="file" value="<?php if (isset($row['file'])) {
    echo $row['file'];
} ?>"/>
              <br>Date of premiere:
                <input type="date" name="premiere_date" value="<?php if (isset($row['premiere_date'])) {
    echo $row['premiere_date'];

} ?>"/> 
                <br>
                  <label>Name of the director:</label>
            <input type="text" name="director_name" value="<?php if (isset($row['director_name'])) {
    echo $row['director_name'];
} ?>"/>
             <br>
                  <button type="submit" value="submit" name="submit">Upload file</button>
                  </form>

                  <?php
                  //Table with records
                  $sql = "SELECT myFilms.id, file_name, file, premiere_date, director_name FROM myFilms JOIN myFilms_directors ON myFilms.director_id = myFilms_directors.id";
                 /*for mysqlia
                  *  $result = $conn->query($sql);
                  */
                  /*for mysql (old)*/
                    $result = mysql_query($sql);

                  if ($result) {

                      echo "<table border='1' id='filesResults'><tr><th>FILE ID</th><th>FILE NAME</th><th>FILE</th><th>PREMIERE DATE</th><th>DIRECTOR NAME</th></tr>";


                      /* in mysqli 
                       * while ($row = $result->fetch_assoc()) */
                      /*for mysql (old)*/
                       while ($row =  mysql_fetch_array($result)) {

                          echo '<tr><td>' . $row['id'] . '</td><td>' . $row['file_name'] . '</td><td><a href= "'. $row['file']. ' ">view file</a></td><td>' . $row['premiere_date'] . '</td><td>' . $row['director_name'] . '</td></tr>';
                      }
                      echo "</table>";
                  } else {
                      echo "there is not data on the table";
                  }
                  /*for mysqli
                  $conn->close();            
                   */
                  /*for mysql (old)*/
                  mysql_close($dbhandle);

                  ?>

所以,當我回顯$ target_file時,我希望它在這種情況下是上傳/ nameOfTheFile.pdf的路徑,但它只顯示為uploads /所以$ target_dir,我使用的是basename函數嗎? 我已經檢查了w3schools,它似乎對我來說,但絕對一定是錯的...

感謝你們!!

更改
$ target_file = $ target_dir。 基名($ _ FILES [ “文件”] [ “FILE_NAME”]);

$ target_file = $ target_dir。 基本名($ _ FILES [ “文件”] [ “名稱”]);

應該管用。

$ _FILES是一個關聯數組,包含:

Array ( [name] => 
 [type] => some value 
[tmp_name] => some value
error] => some value 
[size] => some value
)

$_FILES["file"]["file_name"]更改$_FILES["file"]["name"]

使用var_dump($_FILES)可以查看整個PHP $_FILES關聯數組。 如您所見:

array(1) { 
    ["file"]=> array(5) { 
        ["name"]=> string(14) "plugin wp.docx" 
        ["type"]=> string(71) "application/vnd.openxmlformats-officedocument.wordprocessingml.document" 
        ["tmp_name"]=> string(18) "/var/tmp/phpcoayaU" 
        ["error"]=> int(0) 
        ["size"]=> int(262453) 
    } 
}

$_FILES包含一個名為'file'的associative array ,它有5個索引: nametypetmp_nameerrorsize

您分配的是:

$target_file = $target_dir . basename($_FILES["file"]["file_name"]);

其中,參考上述對象是不正確的,因為["file_name"]不是file一部分。 解決方案應該是明顯的調試信息,只需將["file_name"]更改為["name"]

 $target_file = $target_dir . basename($_FILES["file"]["name"]);

PHP的一些信息var_dump() 在這里 ,因為你似乎沒有意識到這個功能的。

您輸入的文件標記與名稱字段關聯為“文件”。

Instead of using $_FILES["file"]["file_name"] use this $_FILES["file"]["file"]

希望它能為你效勞。

暫無
暫無

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

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