То что говорите вы абсолютно правильно. Но они не касаются моей проблемы.
Давайте посмотрим по другому. Есть js код, который должен отправить форму когда пользователь выбрал файл и вывести на экран слово test
jQuery(document).ready(function(){
form = $("#formid"), upload = $("#formid #select");
upload.change(function(){
form.submit();
});
});
js код должен нажать кнопку $_POST['upload']
if(!empty($_POST['upload']))
{
echo 'test';
}
когда js отправляет форму то нечего не выводит, а если убрать if(!empty($_POST['upload'])) или вручную отправить, то выводит ''test" Почему когда форму отправляет js не выводит "test"??? |
Давайте по другому:
1) if(!empty($_POST['upload'])) - массив $_POST к приему файлов отношения не имеет, если только форма не содержит поля я именем 'upload'. 2) Проверку загруженного файла нужно начинать с проверки ошибок загрузки - if(!$_FILES['field_name']['error']) { действия } Выполните у себя вот этот код отдельно. С передачей проблем не будет.
<form method="post" enctype="multipart/form-data">
<input type="file" name="upload" onchange="this.form.submit()">
<input name="data" value="test">
</form>
<? echo '<pre>'; print_r($_POST); print_r($_FILES); Это к "о не способности отправить скриптом". Не отправляться будет только при наличие ошибок в коде вашем. |
форма отправился
Array
(
[data] => test
)
Array
(
[upload] => Array
(
[name] => 1HO-u9lMQXc.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php2hO4nd
[error] => 0
[size] => 35316
)
)
|
Когда жмешь кнопку, то отправляется ее имя, тоесть на сервере ты получаешь $_POST['uploadfile'].
А когда кнопку не жмешь, то есть когда сабмитишь через .submit() кнопка не отправляется. Вот в чем твоя ошибка - ты на сервере проверяешь $_POST['uploadfile'], а нужно проверять файл. |
Как я понял мне надо проверить на php загружен ли файл?
|
Ну если ваш серверный скрипт, это РНР, на чем же еще вы будете проверять? Вот только проверять и получать информацию о загрузке нужно не в массиве $_POST, а в массиве $_FILES. Если его ключ error равен 0, значит файл загружен успешно и его надо переместить из временной папки /tmp/php2hO4nd в необходимый каталог.
Массив $_POST при этом будет содержать данные формы, если они передавались наряду с файлом, иначе пустой. |
Спасибо, помогли разобраться.
|
| Часовой пояс GMT +3, время: 01:37. |