2016-07-03 5 views
0

Я бы хотел отправить все файлы с помощью кнопки отправки. Загрузка работает нормально, но передача с кнопкой отправки не работает должным образом. Когда я отправлю форму, файлы будут загружены, но передача не будет dump.php. Мне нужно снова выбрать кнопку, чтобы получить передачу на dump.php. Я использую этот код с простым числовым массивом в качестве примера:Plupload-передача с кнопкой отправки

<form id="form" method="post" action="dump.php" enctype="multipart/form-data"> 
<?php 
$num = array('1','2','3'); 
foreach ($num as $upid) { 
?> 
<div id="uploader<?php echo $upid;?>"> 
    <p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p> 
</div> 

<script type="text/javascript"> 
$(function() { 
    // Setup html5 version 
    var uploader<?php echo $upid;?> = $("#uploader<?php echo $upid;?>").plupload({ 
     // General settings 
     runtimes : 'html5,html4', 
     url : 'upload.php?frageid=2', 
     rename : true, 
     filters : { 
      // Maximum file size 
      max_file_size : '10mb', 
      // Specify what files to browse for 
      mime_types: [ 
       {title : "Image files", extensions : "jpg,gif,png"}, 
       {title : "Zip files", extensions : "zip"} 
      ] 
     }, 
     // Resize images on clientside if we can 
     resize : {width : 320, height : 240, quality : 90}, 
     // Sort files 
     sortable: true, 
     views: { 
      list: true, 
      thumbs: true, // Show thumbs 
      active: 'thumbs' 
     } 
    }); 

    // Handle the case when form was submitted before uploading has finished 
    $('#form').submit(function(e) { 
     // Files in queue upload them first 
     if (uploader<?php echo $upid;?>.plupload('getFiles').length > 0) { 
      // When all files are uploaded submit form 
      uploader<?php echo $upid;?>.on('complete', function() { 
       $('#form')[<?php echo $upid;?>].submit(); 
      }); 
      uploader<?php echo $upid;?>.plupload('start'); 
      return false; // Keep the form from submitting 
     } 
    }); 
}); 
</script> 
<?php 
} 
?> 
    <input type="submit" value="Send" /> 
</form> 

Спасибо за помощь

ответ

0

Я не работал с Plupload, но из документации не кажется, предназначено для работы внутри формы, вместо этого он сам выполняет логику загрузки.

URL-адрес, который принимает данные, указывается при создании объекта-загрузчика. В вашем примере это

url : 'upload.php?frageid=2', 

Если вы хотите, чтобы вызвать загрузку файлов с помощью кнопки, вы должны просто создать отдельную кнопку (whitout формы), как это:

<button type="button" id="sendButton">[Button text]</button> 

Тогда прослушивают его событие click

$('#sendButton').click(function(){ 
    uploader.plupload('start'); 
}); 

Этот фрагмент использует jQuery, потому что вы уже используете его в своем примере.

Edit:

Как я уже упоминал ранее, в данных, используемых для создания объекта загрузчика можно указать URL-адрес, так что вы должны изменить что маршрут вы должны обрабатывать данные.

url : 'dump.php', 

В стороне сервера вы используете суперглобальный $_FILES для доступа к загруженным файлам, это упрощенный пример для обработки одного файла.

<?php 

if (empty($_FILES) || $_FILES["file"]["error"]) { 
    die('{"OK": 0}'); 
} 

$fileName = $_FILES["file"]["name"]; 
move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/$fileName"); 

die('{"OK": 1}'); 
?> 

Этот фрагмент был взят из документации Plupload, ее доступной here, вы должны действительно проверить его. Кроме того, в нем четко указано, что этот код не выполняет никаких проверок, поэтому вы действительно не должны использовать его как есть, но, скорее, учтите его при создании.

+0

Спасибо за помощь Кевин. Я не очень разбираюсь в JavaScript. Ваше решение работает нормально, но только для загрузки файлов. Я удалил свою форму и создал кнопку. Как я могу реализовать передачу в dump.php, как в моей форме? Я должен отправить больше данных. На следующей странице (dump.php) я проведу запрос $ _POST REQUEST и поместите данные в свою базу данных. Фактически, когда я нажимаю кнопку «Отправить», я вижу, что файлы загружаются, но не проверяет REQUEST, чтобы помещать некоторые сообщения, когда что-то идет не так. – montaa