Stalker_RED, на клиенте я хочу вручную сформировать запрос, просто если это делать вот так:
var data = {
name: 'Виктор',
surname: 'Цой'
};
var boundary = String(Math.random()).slice(2);
var boundaryMiddle = '--' + boundary + '\r\n';
var boundaryLast = '--' + boundary + '--\r\n'
var body = ['\r\n'];
for (var key in data) {
// добавление поля
body.push('Content-Disposition: form-data; name="' + key + '"\r\n\r\n' + data[key] + '\r\n');
}
body = body.join(boundaryMiddle) + boundaryLast;
То это длинно, неудобно и плохо читается. В случае же если еще и файлы цеплять, так еще и лишняя нагрузка будет, ведь придется файл сначала перегнать в текст, а текста там может получится дофига мегабайт.
Вот я и подумал, а может у объекта FormData есть какие-нибудь встроенные методы для конвертации?
Насчет зачем это надо. Это связано с прошлым моим вопросом. Если кратко, то хочу отправить на сервер данные в формате multipart/form-data, но в заголовке Content-Type прописать другой тип:
Таким образом, я смогу на стороне сервера прочитать тело через php://input и потом тупо переслать его дальше.
P. S. Честно сказать немного задолбался с экспериментами, поэтому я все же пойду другим путем и тупо подниму прокси на отдельном домене с отключенной опцией enable_post_data_reading. Текущий вопрос не актуален если что уже.
const fd = new FormData(formElem); // загрузка данных из существующей HTML-формы (можно не указывать)
for (const [key, value] of Object.entries(data)) {
formData.append(key, value); // добавление полей из вашего объекта data
}
formData.append(name, fileContent, filename); // дробавление файла
xhr.send(fd);