【问题标题】:how to upload and save a file with desired name php如何上传和保存具有所需名称的文件 php
【发布时间】:2014-09-15 21:42:30
【问题描述】:

我想在项目文件夹内的根目录中上传并保存一个带有变量名的文件,下面的代码是我尝试过的,但是当我转到该文件夹​​时,那里没有文件

<?php
if (isset($_POST['submit_student'])){
    $student_id=mysqli_real_escape_string($cnn,$_POST['student_id']);
    $exam_id=mysqli_real_escape_string($cnn,$_POST['exam_id']);

echo " <form action='manage_add_result.php' method='POST' enctype='multipart/form-data'>";
echo "  <input type='file' name='resultpdf'><br>";
echo "  <input type='hidden' name='exam_id' value=\"{$exam_id}\">";
echo "<input type='hidden' name='student_id' value=\"{$student_id}\">";
echo "<input type='submit' name='upload_btn' value='upload'>";
echo "</form>";
}
 ?>
 <?php 

 if (isset($_POST['upload_btn'])){
 if(isset($_FILES['resultpdf']['name'])){
 $newname=mysqli_real_escape_string($cnn,$_POST['student_id']) . "_".mysqli_real_escape_string($_POST['exam_id']) . ".pdf";
 $target='karname/'."{$newname}";
  move_uploaded_file( $_FILES['resultpdf']['tmp_name'] , $target);

 }


 }

 ?>

我想知道我该怎么办

【问题讨论】:

  • 您应该首先将一些 else 块添加到您的 ifs 中,然后查看哪些条件失败。然后尝试找出他们失败的原因。另外,检查move_uploaded_file 的返回值。而且,也许您需要激活或增加错误报告。
  • 那么,所有的ifs 都成功了,move_uploaded_file 返回了true?您是否尝试过转储 $target 变量? echo realpath($target) 的输出是什么?
  • 查看你的 karname/ 文件夹的 chmod
  • 它告诉我上传按钮没有设置
  • 这可能是因为您有两套单独的代码。您应该使用没有回显的标准 HTML 方法将 HTML 表单放在 PHP 之外,然后将整个 PHP/SQL 放在 &lt;?php ... ?&gt; 内 - 另外,您没有名为 submit_student 的表单元素,这是最重要的原因。

标签: php forms upload


【解决方案1】:

首先,您没有名为submit_student 的表单元素,这就是为什么您的部分代码不起作用的原因,根据此条件语句if (isset($_POST['submit_student']))

尝试以下方法:

<?php
 if (isset($_POST['upload_btn'])){
    $student_id=mysqli_real_escape_string($cnn,$_POST['student_id']);
    $exam_id=mysqli_real_escape_string($cnn,$_POST['exam_id']);


    if(isset($_FILES['resultpdf']['name'])){
    $newname=mysqli_real_escape_string($cnn,$_POST['student_id']) . "_".mysqli_real_escape_string($_POST['exam_id']) . ".pdf";
    $target='karname/'."{$newname}";
    move_uploaded_file( $_FILES['resultpdf']['tmp_name'] , $target);
    }


    echo " <form action='' method='POST' enctype='multipart/form-data'>";
    echo "  <input type='file' name='resultpdf'><br>";
    echo "  <input type='hidden' name='exam_id' value=\"{$exam_id}\">";
    echo "<input type='hidden' name='student_id' value=\"{$student_id}\">";
    echo "<input type='submit' name='upload_btn' value='upload'>";
    echo "</form>";
    }
?>

另外,由于您从同一个文件中执行所有内容,您可以只使用 action="" 而不是 action='manage_add_result.php'


error reporting 添加到文件顶部,这将有助于生产测试。

error_reporting(E_ALL);
ini_set('display_errors', 1);

【讨论】:

  • 我在该页面中有 3 个表单,如下所示:第二个表单将由第一个表单生成,第三个表单将由第二个表单生成我该如何处理?
  • @MortezaAzmoodehafshar 我不知道 Morteza 怎么样。
猜你喜欢
  • 2011-03-31
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多