#php #jquery #plupload
#php #jquery #загрузка
Вопрос:
я использую plupload ( http://www.plupload.com/index.php ) и я хотел бы знать, как я могу передать переменные в форме в upload.php файл , я попробовал это:
<form method="post" action="dump.php">
<input type="text" id="event_id"/>
<div id="uploader">
<p>You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p>
</div>
</form>
$(function() {
$("#uploader").plupload({
// General settings
runtimes : 'flash,html5,browserplus,silverlight,gears,html4',
url : '../upload.php?event_id=' $("#event_id").val(),
max_file_size : '1000mb',
max_file_count: 20, // user can add no more then 20 files at a time
chunk_size : '1mb',
unique_names : false,
подобное (передача переменной в строке запроса) не работает.
Комментарии:
1. Что значит «не работает»? Можем ли мы увидеть ваши
upload.php
и то, что вы пытаетесь сделать со строкой запроса /$_GET
vars? У вас установлен Firebug? Если нет, вы должны, или это будет трудно отлаживать.2. the upload.php является оригинальным, я просто изменил это (чтобы посмотреть, был ли отправлен var в строке запроса), но ничего не произошло: $targetDir = ‘uploads /’.$_GET[«event_id»].’/’;
3. Попробуйте сначала жестко задать значение:
$targetDir = 'uploads/3/';
и посмотрите, работает ли это, это может быть проблема с разрешениями при создании каталога. Кроме того, откройте консоль Firebug и выполните aexit(print_r($_GET))
в своем php-скрипте и посмотрите, что произойдет.4. Хорошо, а как насчет
print_r()
? Прочитайте весь комментарий.5. как вы повторяете print r в firebug?
Ответ №1:
Может быть, с multipart_params
опцией? Найдено в документации.
multipart_params: {event_id : $("#event_id").val(), param2 : 'value2'}
Используется $_REQUEST['event_id']
для получения идентификатора события.
Комментарии:
1. кстати, я все еще не могу решить проблему, это очень, очень сложно.
2.
$_REQUEST
это ответ, дамы и господа. вы можете использовать multipart_params и продолжать искать их в $_POST, пока не сойдете с ума, или вы можете посмотреть на $_REQUEST, как я только что сделал, наконец, в long, long, last . спасибо за этот ответ!
Ответ №2:
Если вы хотите отправить разные параметры для каждого файла, просто сделайте это так:
uploader.bind('BeforeUpload', function(up, file) {
up.settings.multipart_params = {"fileid": file.id };
});
Комментарии:
1. Привет, не могли бы вы сказать мне, куда я должен поместить этот фрагмент кода? я имею в виду, должен ли я использовать $(‘#uploader’).bind(…)
Ответ №3:
Вот как я это сделал. Я не думаю, что это очень сложно 🙂
uploader.bind('BeforeUpload', function(up, file) {
up.settings.url = url "?plupload_id=" file.id;
});
чтобы получить его:
if(isset($_GET['plupload_id']))$id = $_GET['plupload_id'];
Комментарии:
1. Спасибо, хорошая идея. Но он добавляет несколько параметров. Лучшее решение — вместо этого используйте метод uploadFile