【问题标题】:php uploading filesphp上传文件
【发布时间】:2023-04-11 01:15:01
【问题描述】:

我在上传文件时遇到问题。这是我的表格:

 <form enctype="multipart/form-data" action="transact.php" method="POST">
 <table>
 <tr>
 <td>Nadpis:</td>
 <td><input type="text" id="title" name="title" value="<?php echo      htmlspecialchars($title); ?>" /></td></tr>
 <tr>
 <td>Text článku:</td>
 <td><textarea id="text" name="text" cols="55" rows="20"><?php if(!empty($a_text)) { echo htmlspecialchars($a_text); } ?></textarea></td>
 </tr><tr>
 <td>Obrázok k článku:</td>
 <td><input type="file" name="uploadfile" /></td></tr>
 <tr><td> </td>
 <td>
 <?php
 if ($_SESSION['access_level'] < 2) {
 echo '<input type="hidden" name="user_id" value="'. $user_id. '"/>';
 }

 if(empty($article_id)) {
 echo '<input type="submit" name="action" value="Odoslat" />';
 } else {
 echo '<input type="hidden" name="article_id" value="' .$article_id. '"/>';
 echo '<input type="submit" name="action" value="Ulozit" />';
 }
 ?>
 </td>
 </tr>
 </table>
 </form>

当我运行脚本 transact.php 时出现错误:注意:未定义的索引:第 138 行的 E:\xampp\htdocs\capitals\transact.php 中的上传文件 当我输入 print_r($_FILES) 我得到的只是 Array() php.ini 文件中最大上传大小的值设置为 128 MB

我的交易脚本:

      case 'Odoslat':
      session_start();
      $text = (isset($_POST['text']))? $_POST['text']: '';
      $nadpis = (isset($_POST['title']))? $_POST['title']: '';
      $image = (isset($_FILES['uploadfile']))?           imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']): '';


      print_r($_FILES); // it writes Array()
      if(isset($_SESSION['id']) && !empty($nadpis) && !empty($text) &&           $_FILES['uploadfile']['error'] == UPLOAD_ERR_OK)   //here it indicates error
      {
      $ext = '.jpg';
      $query = 'INSERT INTO articles (article_id, user_id, a_text, title, submit_date)
      VALUES(NULL, '. $_SESSION['id']. ', "'. mysql_real_escape_string($text, $db). '", "'. 
      mysql_real_escape_string($nadpis, $db). '",  "' . date('Y-m-d H:i:s'). '")';
      mysql_query($query, $db) or die(mysql_error($db));
      $clanok_id = mysql_insert_id($db);
      $query = 'INSERT INTO foto (foto_id, article_id)
      VALUES (NULL, '. $clanok_id. ')';
      mysql_query($query, $db) or die(mysql_error($db));
      if(!empty($image))
      {
      $last_id = mysql_insert_id($db);
      $image_name = $last_id. $ext;
      imagejpeg($image, $dir. '/'. $image_name, 100);
      }
      else
      {
      $last_id = mysql_insert_id($db);
      $image_name = 'caps.jpg';
      }
      $priecinok = 'images/';
      $place = $priecinok. $image_name;
      $query = 'UPDATE foto 
      SET foto_path = "'. $place. '" WHERE foto_id = '. $last_id;
      mysql_query($query, $db) or die(mysql_error($db));
      $query = 'UPDATE articles 
      SET foto_id = '. $last_id. ' WHERE article_id = '. $clanok_id;
      mysql_query($query, $db) or die(mysql_error($db));

      $redirect = 'index.php';
      }

      else
      {
      $chyba = 'Nepodarilo sa nahrat clanok!';
      $redirect = 'index.php?chyba='. $chyba;
      }
      break;

请问我该如何修复它?如果有人帮助我,我将非常感激......

【问题讨论】:

标签: php uploading


【解决方案1】:

您应该在 php.ini 文件中检查 4 件事,以确保文件上传正常:

  • file_uploads:应该设置为 1
  • upload_max_filesize :应该设置为一个足够大的值,以供您计划上传的内容。你说它设置为128 MB。确保它写为“128M”。
  • post_max_size :应设置为高于 upload_max_filesize 的值,因为它包含文件和其他发布数据
  • ma​​x_file_uploads:不太重要,但它限制了您一次可以上传的文件数量

【讨论】:

    【解决方案2】:

    php.ini 中最重要的一项设置是,请检查您是否有权在上传图像的特定文件夹中写入。

    【讨论】:

      【解决方案3】:

      尝试在您的表单中添加:

      <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
      

      此值将最大文件设置为 100KB。

      【讨论】:

      • 不!最大文件大小不是用户输入。它应该是一个常量或服务器端变量。隐藏的输入很容易被用户更改!
      猜你喜欢
      • 2014-07-14
      • 2011-01-26
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多