>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Отправить multipart/form-data при помощи XMLHttpRequest http://forum.mozilla-russia.org/viewtopic.php?id=44387 |
KML > 05-05-2010 15:54:46 |
Вот такой код формирует телол запроса, идентичное тому, что отправляется по сабмиту формы. Я сравнивал два POST Data (RAW) которые получил при помощи HttpFox. Выделить код Код:var addAdReq = new XMLHttpRequest(); addAdReq.open('POST', postAdUrl, false); addAdReq.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary); var stringStream = Components.classes["@mozilla.org/io/string-input-stream;1"].createInstance(Components.interfaces.nsIStringInputStream); var data = ""; data += boundary; data += "\r\n"; data += 'Content-Disposition: form-data; name="category_id"\r\n\r\n'; data += categoryId; data += "\r\n"; data += boundary; data += "\r\n"; .......[и т.д.]....... data += boundary; data += "--\r\n"; stringStream.setData(data, data.length); addAdReq.send(stringStream); |
KML > 05-05-2010 19:26:17 |
KML пишет
Нашел ошибку, в хедере строка boundary должна содержать на два символа '-' меньше чем в остальных случаях. |
Zeiss > 27-05-2010 15:31:09 |
Я как раз над аналогичной задачей на днях работал (отправка файлов вместе со значениями формы), может, следующие моменты окажутся полезными: Кстати (этим досужим вопросом пока не занимался), можно ли компрессировать POST-данные, установив Content-Encoding: gzip? |