2016-11-02 5 views
0

Неужели кто-нибудь смог реализовать эту функцию?Продвижение загрузки файла PHP

http://php.net/manual/en/session.upload-progress.php

таллием, др является то, что при проводке форму, содержащую файл, если включить ввод с «именем» атрибут со значением session.upload_progress.name в php.ini, то PHP будет заполнять $ _SESSION данными о состоянии загрузки.

Форма:

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 

upload.php

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

<?php 

print_r($_FILES); 

?> 

session.php:

Выполнить это отдельный PHP фи ле во время загрузки файла для проверки прогресса

<?php 

$key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")]; 
var_dump($_SESSION[$key]); 
?> 

Я перепробовал весь лот вариации в этих сценариях и в php.ini настройки и независимо от того, что массив $ _SESSION никогда не заполняется ни в загружаемых данных. Session_start() вызывается по умолчанию. Я попытался в обоих версиях 5.4 и 5.6. Я пробовал все, что было предложено в комментариях в документации PHP, включая запуск с FastCGI и без него. Я вообще пробовал все.

Это важно, потому что я работаю над настольным приложением, которое использует запросы POST для связи с скриптами .php на веб-сервере, я не пользуюсь браузером, поэтому решения JS/HTML5 не являются частью изображения. Также невозможно написать свои собственные функции измерения прогресса в PHP, потому что скрипт, который обрабатывает загрузку файла (upload.php), фактически не запускается до тех пор, пока загрузка (в каталог temp со случайным именем) не будет завершена. Нет способа узнать, какой фактический файл связан с темпом, пока загрузка не будет завершена, а сценарий загрузки не будет запущен, что позволит получить доступ к $ _FILES. Пожалуйста, помогите, я пробовал каждую доступную возможность. Благодарю.

ответ

0

Форма: // Смотрит Ok

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
    <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 

upload.php // Смотрит Ok слишком

<?php 

print_r($_FILES); 

?> 

session.php // рекомендовать некоторые изменения здесь

<?php 
session_start();//leave this out if you are session is starting automatically 
$key = ini_get("session.upload_progress.prefix") ."123"; //123 value of hidden input 
var_dump($_SESSION[$key]); 
?> 

Основная проблема заключается в вашей форме. Html. Просмотр их ссылки или вызова на сеанс. .php. (Мне не нравится имя session.php. У меня есть эта часть меня, которая боится, что она может вмешиваться в $ _SESSION scoper). В идеале вы можете (большинство людей) использовать JS/Ajax-вызов для запроса Session.php для получения результата. В этом случае я бы рекомендовал:

форма: (не забудьте импортировать JQuery до этого) сессии

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" /> 
<input type="file" name="file1" /> 
<input type="file" name="file2" /> 
<input type="submit" /> 
</form> 
<script> 
$(document).ready(function(){ 
    $('form').on('submit',function(){ 
    $.get("session.php", function(response) { 
    console.log(response); // server response-$_SESSION dump 
}); 
    }) 
}) 
</script> 

.php:

<?php 
session_start();//leave this out if you are session is starting automatically 
$key = ini_get("session.upload_progress.prefix") ."123"; //123 value of hidden input 
var_dump($_SESSION[$key]);//or echo $_SESSION[$key]["bytes_processed"]. I am not sure how the array would playout inside the returned JSON 
?> 
Смежные вопросы