php: jpeg загрузка файла не удалась - PullRequest
0 голосов
/ 12 августа 2011

У меня есть следующий код для загрузки изображений, когда я пытался загрузить файл jpg, он не работает, но когда я пробовал файлы png, он работал!В чем может быть проблема?Большое спасибо за любую помощь!:)

<html>
<head>
     <title>Banners</title>
</head>
<body>
<?php
isset($_REQUEST['action']) ? $action = $_REQUEST['action'] : $action = '';

if( $action == 'uploadfiles' ){
     //define where the files will be uploaded
     $upload_directory = 'uploads/banners/';
     $x=0;  
          echo "</div>Uploaded Files:</div>";
          foreach ( $_FILES['data']['name'] AS $key => $value ){  
               echo "<div>{$value}</div>";
               //Move file to server directory
               move_uploaded_file($_FILES["data"]["tmp_name"][$x], $upload_directory . $_FILES["data"]["name"][$x]);
               $x++;  
          }
}
?>
     <form enctype="multipart/form-data" action="#" method="POST">
          <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
               <div>Choose a file to upload:</div>
                    <div id="text">
                         <div ><input name="data[]" type="file" /></div>
                         <!-- This is where the new file field will appear -->
                    </div>
                    <input type="button" id="add-file-field" name="add" value="Add input field" />
                    <input type='hidden' name="action" value="uploadfiles" />
                    <input type="submit" value="Upload File" />
     </form>


     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
     <script type='text/javascript'>
          $(document).ready(function(){
                // This will add new input field
               $("#add-file-field").click(function(){
                    $("#text").append("<div class='added-field'><input name='data[]' type='file' /><input type='button' class='remove-btn' value='Remove Field' /></div>");
               });
               // The live function binds elements which are added to the DOM at later time
               // So the newly added field can be removed too
               $(".remove-btn").live('click',function() {
                    $(this).parent().remove();
               });
          });
     </script>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Этот код выглядит нормально и работает на моей машине.Это, вероятно, проблема где-то еще.Вы уверены, что ваш файл меньше 100 КБ?

0 голосов
/ 12 августа 2011

В вашем коде нет ничего, что фильтрует по типу файла.Тем не менее, у вас нет абсолютно никакой обработки ошибок, поэтому попробуйте это:

foreach ( $_FILES['data']['name'] AS $key => $value ){  
    if ($_FILES['data']['name']['error'][$key] === UPLOAD_ERR_OK) {
        move_uploaded_file(...);
    } else {
        die("Got error code " . $_FILES['data']['name']['error'][$key] . ' on file ' . $value);
    }
}

Коды ошибок задокументированы здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...