Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Submit Формы после выбора файла (https://javascript.ru/forum/misc/54524-submit-formy-posle-vybora-fajjla.html)

haa 21.03.2015 09:17

Submit Формы после выбора файла
 
Есть код на js, отправить форму после выбора файла. Когда выбираю файл обновляет страничку и все, а на базу не записывает. А без js т.е вручную работает. Может кто знает в чем проблема?
jQuery(document).ready(function(){
     
	   	form = $("#formid"), upload = $("#select");
	    upload.change(function(){
	      form.submit();
	    });

    });


<form method="POST" action="" id="formid" enctype="multipart/form-data">
		    <input type="file" name="uploadfile" id="select">
		    <input type="submit" name="uploadfile" style="display: none;">
		</div>
	</form>

danik.js 21.03.2015 09:56

Цитата:

Сообщение от haa
name="uploadfile"

Убери name у кнопки. Или измени. Хотя по идее должно наоборот без js не работать.
И кнопку не скрывай, а засунь ее в <noscript>

laimas 21.03.2015 10:09

обновляет страничку и все, а на базу не записывает

Что за файл, как получаете файл и записываете?

haa 21.03.2015 10:16

При нажатии $_POST['uploadfile']

Загруженный файл
$file = $_FILES['uploadfile']['name']

mySQL запрос
UPDATE users SET photo=$file

haa 21.03.2015 10:24

Цитата:

Сообщение от danik.js (Сообщение 362335)
Убери name у кнопки. Или измени. Хотя по идее должно наоборот без js не работать.
И кнопку не скрывай, а засунь ее в <noscript>

не работает

laimas 21.03.2015 10:28

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

PS. И так нельзя записывать даже имя.

haa 21.03.2015 10:36

Ну да, делаю проверку, ну тут же дело не втом что я получаю, а мне просто надо записать имя полученного файла. А как можно записать имя ?

Когда сам нажимаю на кнопку записывает, обновляет. Все работает как надо.

laimas 21.03.2015 10:49

Имя нужно записывать как минимум так basename($_FILES['uploadfile']['name']), естественно после того как удостоверившись, что все соответствует ожиданиям.

А получает ли сервер файл можно проверить, что показывает массив принятый?

haa 21.03.2015 11:35

Да, да да , я знаю что такое base name. Но вопрос то не в этом.
Массив показывает ошибку если отправить форму вручную. Тут дело в js

laimas 21.03.2015 12:05

В показанном коде ошибки нет, я не могу продемонстрировать здесь, но это код будет работать, могу снимки с экрана только показать.

А вот ошибки в массиве $_FILES на сервере говорят о том, что файл передается, иначе бы массив был пуст. По номеру ошибки можно судить что происходит.

Знаете что такое basename(), так почему не используете.


Часовой пояс GMT +3, время: 13:58.