Извращенный решений нашел много. Самые нормальные, как показалось мне - это использование скрытых iframe'ов
И только что натолкнулся на форуме, на вот такой пример отправки данных.
<script type="text/javascript">
...
/* тут описание переменных */
...
if(document.all) xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
else if(XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else alert("XMLHttpRequest не работает!");
if(xmlhttp){
xmlhttp.open("POST", "example_upload.php", false);
xmlhttp.setRequestHeader("Content-Type", "multipart/form-data; boundary=1BEF0A57BE110FD467A");
xmlhttp.setRequestHeader("Content-Length", "2000");
formData = "--1BEF0A57BE110FD467A\r\nContent-Disposition: form-data; name='mark'\r\n\r\n'" + markForm.value + "'\r\n --1BEF0A57BE110FD467A\r\nContent-Disposition: form-data; name='uploadfile'; filename='"+file.value+"'\r\nContent-Type: application/octet-stream\r\n\r\n" + <????????> + "\r\n--1BEF0A57BE110FD467A--\r\n";
</script>
<form name="uploadForm" method="post" enctype="multipart/form-data">
<input name="mark" type="text" />
<input type="file" name="uploadfile" />
<input name="Button" type="button" value="Upload File" onclick="sendHttp();"/>
Итак это кусок кода, отвечающего за формирование и отправку POST запроса посредством JS и XMLHttpRequest.
Что надо?
Насколько всем известно GET-запрос отправит данные в виде:
http://.../example_upload.php?file=<путь к файлу в URL кодировке>&mark=<значение поля mark>&button=Upload%20File
POST-запрос выглядит координально по другому:
--1BEF0A57BE110FD467A
<переход строки>
Content-Disposition: form-data; name='mark'
<переход строки>
<переход строки>
<значение поля mark>
<переход строки>
--1BEF0A57BE110FD467A
<переход строки>
Content-Disposition: form-data; name='uploadfile'; filename='путь к файлу в URL кодировке>'
<переход строки>
Content-Type: application/octet-stream
<переход строки>
<переход строки>
<ВНИМАНИЕ! ТУТ ДОЛЖЕН БЫТЬ ФАЙЛ В БИНАРНОМ ВИДЕ, а не просто путь к этому файлу>
<переход строки> --1BEF0A57BE110FD467A--
<переход строки>
то вообще работает? кто может объснить?
а работоспособность не проверял...
Может пожалуйста кто то объяснить, что это мы в заголовке указываем:
("Content-Type", "multipart/form-data; boundary=1BEF0A57BE110FD467A");
Можно ли таким образом файлы передавать на ajax'e ?
И вот еще вопросик:
Вот нашел статью, где показан пример загрузки файла на сервер через ajax (XMLHttpRequest)
learn.javascript.ru/xhr-resume
Скажите пожалуйста, это нормально решение?
А то весь гугл облазил, и везде пишут что это невозможно. Только через iframe или другие извращения.
Что же используется в примере из статьи?
Помогите пожалуйста...