首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php:目录名称+文件名

php:目录名称+文件名
EN

Stack Overflow用户
提问于 2015-08-13 08:29:36
回答 4查看 138关注 0票数 4

我正在编写一个用PHP上传文件的表单。这些是我的投入:

代码语言:javascript
运行
复制
 $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');

这就是我不知道我做错了什么

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
 <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的路径,但是它只显示为$target_dir/所以是$target_dir,我是在使用basename函数吗?我已经查过w3schools了,这对我来说是对的,但肯定是出了什么问题.

谢谢你们!!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-13 09:03:54

使用var_dump($_FILES)可以查看整个PHP关联数组。如你所见:

代码语言:javascript
运行
复制
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

你的任务是:

代码语言:javascript
运行
复制
$target_file = $target_dir . basename($_FILES["file"]["file_name"]);

引用上面的对象是不正确的,因为["file_name"]不是file的一部分。解决方案应该显而易见,查看调试信息,只需将["file_name"]更改为["name"]即可。

代码语言:javascript
运行
复制
 $target_file = $target_dir . basename($_FILES["file"]["name"]);

关于PHP var_dump() 这里的一些信息,因为您似乎不知道这个函数。

票数 1
EN

Stack Overflow用户

发布于 2015-08-13 08:54:13

变化

$target_file = $target_dir。basename($_FILES"file");

$target_file = $target_dir。basename($_FILES"file");

应该行得通。

票数 4
EN

Stack Overflow用户

发布于 2015-08-13 08:54:31

$_FILES是一个关联数组,它包含:

代码语言:javascript
运行
复制
Array ( [name] => 
 [type] => some value 
[tmp_name] => some value
error] => some value 
[size] => some value
)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31983172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档