1

ファイルのアップロードに問題があります。ここに私のフォームがあります:

 <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を実行するとエラーが発生します: Notice: Undefined index: uploadfile in E:\xampp\htdocs\capitals\transact.php 行 138 で、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;

どうすれば修理できますか?誰かが私を助けてくれたら、とても感謝します...

4

3 に答える 3

0

ファイルのアップロードが機能することを確認するために、php.ini ファイルで確認する必要がある 4 つの項目があります。

  • file_uploads : 1 に設定する必要があります
  • upload_max_filesize : アップロードする予定のものに十分な大きさの値に設定する必要があります。あなたはそれが128 MBに設定されていると言った。「128M」と書かれていることを確認してください。
  • post_max_size : ファイルとその他の投稿データが含まれるため、upload_max_filesize よりも大きな値に設定する必要があります。
  • max_file_uploads : それほど重要ではありませんが、一度にアップロードできるファイルの数を制限します
于 2014-02-24T21:50:23.843 に答える
0

php.ini 設定からの最も重要な apasrt の 1 つは、画像をアップロードする特定のフォルダーに書き込む権限があるかどうかを確認してください。

于 2014-02-25T12:24:46.433 に答える
-2

これをフォームに追加してみてください:

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

この値は最大ファイルを 100KB に設定します。

于 2012-06-25T15:58:05.203 に答える