|
|
|
| Как отправить в с помощью XMLHttpRequest одновременно данные полей формы и изображение
Ведь для данных формы Content-Type: application/x-www-form-urlencoded;charset=windows-1251, а для изображения Content-Type: multipart/form-data | |
|
|
|
|
|
|
|
для: Prihod
(26.04.2007 в 15:01)
| | Ну к примеру:
<form name=form1 method="post" action=file1.php>
<!--Здесь текстовые поля-->
</form>
<form name=form2 method=post action=file2.php>
<!--Здесь рисунок -->
</form>
<input type=button onclick="document.forms['form1'].submit();document.forms['form2'].submit()">
|
Правда получится не идеально одновременно, но ничего.
А если отсылать аяксом, то вообще будет красиво... | |
|
|
|
|
|
|
|
для: coloboc66
(26.04.2007 в 15:38)
| | Дело в том что данные формы нужно обработать в одном скрипте , их нужно внести в базу данных одним запросом | |
|
|
|
|
|
|
|
для: Prihod
(26.04.2007 в 16:06)
| | Тогда аяксом два раза отправлять данные одному и тому же РНР-файлу, но с разными параметрами content type в setRequestheader () аякса. Больше ничего в голову не приходит. Еще нужно уточнить- возможно ли вообще отправлять рисунки аяксом... | |
|
|
|
|
|
|
|
для: coloboc66
(26.04.2007 в 16:21)
| | А почему бы не сделать единую форму для отправки и текста и картинки таким образом:
<form enctype="multipart/form-data" method="post" action="insert.php">
Название картинки: <input name="picture_name" type="text" value="" size="41" /><br />
Описание картинки: <textarea name="picture_description" cols="30" rows="5"></textarea><br />
<input type="hidden" name="max_file_size" value="300000" />
Файл картинки: <input name="picture_file" type="file" size="32" /><br />
<input type="submit" title="Отправить файл" value="Отправить" />
<input type="reset" title="Очистить форму" value="Очистить" />
</form>
|
Проверено - работало. | |
|
|
|
|
|
|
|
для: ilyaILF
(26.04.2007 в 16:34)
| | Может так и можно, я не пробовал, просто смущает enctype="multipart/form-data" - работает для текстовых полей? | |
|
|
|
|
|
|
|
для: coloboc66
(26.04.2007 в 17:00)
| | Да, работает, только на сервере текстовый блок принимается с помощью обычного $_POST:
$value=$_POST[$name_field];
|
А файл, в данном случае картинка, с помощью $_FILES:
$value=file_get_contents($_FILES[$name_field][tmp_name]); $value = mysql_escape_string($value);
|
Текст я вставлял в строковое поле mysql - char, text, а картинки соответственно в blob, точнее mediumblob. | |
|
|
|
|
|
|
|
для: ilyaILF
(26.04.2007 в 17:16)
| | При установки enctype="multipart/form-data" и попытки принять текстовые данные с помощью $_POST ничего не получается массив оказывается пустым :( | |
|
|
|
|
|
|
|
для: Prihod
(26.04.2007 в 18:13)
| | И атрибут method="post" у тега <form> тоже оставили? | |
|
|
|
|
|
|
|
для: ilyaILF
(26.04.2007 в 18:26)
| | Да только я отправляю не через форму а через AJAX запрос
req.onreadystatechange=processReqChange;
req.open(post,url,true);
req.setRequestHeader("Content-Type", "multipart/form-data");
req.send(params); | |
|
|
|
|
|
|
|
для: Prihod
(26.04.2007 в 20:02)
| | Сначала попробуйте сделать, как советует ilyaILF - без аякса, традиционным способом. А картинка отправляется?. | |
|
|
|
|
|
|
|
для: coloboc66
(26.04.2007 в 22:32)
| | без аякса все отправляется а с ним ничего, даже картинка и та не отправляется, походу причина в аяксе но где именно ???? | |
|
|
|
|
|
|
|
для: Prihod
(27.04.2007 в 14:13)
| | Ну так поищите, где именно: сначала отправляйте только текстовые поля, потом - только картинку, потом - все вместе. И смотрите, что происходит на каждом этапе, где нарушается работа... | |
|
|
|