php上传文件

时间:2012-06-25 15:54:51

标签: php uploading

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

 <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中的uploadfile 当我输入print_r($ _ FILES)时,我只得到 Array() php.ini文件中max upload size的值设置为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;

请问我该怎么说呢?如果有人帮助我,我将非常感激......

3 个答案:

答案 0 :(得分:0)

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

  • file_uploads :应设置为1
  • upload_max_filesize :应设置为足以满足您上传计划的值。你说它设置为128 MB。确保它写为'128M'。
  • post_max_size :应设置为高于upload_max_filesize的值,因为它包含文件和其他发布数据
  • max_file_uploads :不太重要,但它限制了您可以一次上传的文件数量

答案 1 :(得分:0)

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

答案 2 :(得分:-2)

尝试在表单中添加:

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

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