Как серверная часть отправки формы получает данные. Как html получает содержимое отправки формы?
Как серверная часть отправки формы получает данные. Как html получает содержимое отправки формы?

Используя запрос POST, формула для собственного приема в фоновом режиме:

Язык кода:javascript
копировать
req.addListener("data",function(chunk){ 
   
   alldata += chunk;
})
//Когда все передачи завершены
req.addListener("end",function(){ 
   
    console.log(alldata,toString());
    req.end("success");
})

Вот пример использования нативногоpostФормула запроса принимается в фоновом режимеданные: Страница формы:

Язык кода:javascript
копировать
//Поскольку изображения будут загружены позже, нам нужно добавить атрибуты в форму. enctype="multipart/form-data"
<form action="http://127.0.0.1:2000/dopost" enctype="multipart/form-data" method="post">
<p>
Имя:<input type="text" name="name">
</p>
<p>
пол:<input type="radio" name="sex" value="мужской">мужской
<input type="radio" name="sex" value="женский">женский
</p>
<p>
картина:
<input type="file" name="picture">
</p>
<p>
爱好:<input type="checkbox" name="hobby" value="теннис">теннис
<input type="checkbox" name="hobby" value="футбол">футбол
<input type="checkbox" name="hobby" value="бадминтон">бадминтон
</p>
<p>
<input type="submit"/>
</p>
</form>

Процедура получения:

Язык кода:javascript
копировать
var querystring = require("querystring");
//Создаем сервер
var server = http.createServer(function (req,res) { 

//Если адрес, который вы посещаете, — это адрес, отправленный формой, а метод отправки формы — POST
// toLowerCase преобразует все буквы в нижний регистр
//Он может быть принят на короткий период времени, а затем отправлен другим. Размещение слишком большой формы блокирует весь процесс.
if(req.url == "/dopost"&&req.method.toLowerCase() == "post"){
var alldata = "";
req.addListener("data",function (chunk) { 

alldata += chunk;
console.log(chunk);
//Все передачи завершены
req.addListener("end",function () { 

var datastring = alldata.toString();
var data = querystring.parse(datastring,null,null);
console.log(data);
res.end("success");
})
});
}
}).listen(1000,'127.0.0.1');
console.log(1);

Если полученные данные не сериализованы, на выходе будет строка двоичных кэшированных данных:

После сериализации:

Однако мы можем ввести модули для упрощения нативного кода и реализации загрузки файлов: Сначала нам нужно установить этот модуль в cmd или powershell:

Затем конкретный код реализации:

“` var http = require(“http”); var fs = require(“fs”); var querystring = require(“querystring”); var formidable = require(“formidable”); var util = require(“util”); //Создаем сервер var server = http.createServer(function (req,res) { //Если адрес, который вы посещаете, — это адрес, отправленный формой, а метод отправки формы — POST // toLowerCase преобразует все буквы в нижний регистр //Он может быть принят на короткий период времени, а затем отправлен другим. Размещение слишком большой формы блокирует весь процесс. if(req.url == “/dopost”&&req.method.toLowerCase() == “post”){ var form = new formidable.IncomingForm(); //Установим адрес, по которому файл будет загружен и сохранен. form.uploadDir = “./uploads”; //При выполнении функции обратного вызова внутри все формы были приняты. form.parse(req, function(err, fields, files) {

Язык кода:javascript
копировать
        //Все текстовые поля и переключатели размещаются в полях, а все поля файлов — в файлах.
// res.writeHead(200, {'content-type': 'text/plain'});
// res.write('received upload:\n\n');
console.log( util.inspect({fields: fields, files: files}));
res.end("success");
// res.end(util.inspect({fields: fields, files: files}));
});
}

}).listen(2000,’127.0.0.1’); консоль.журнал(1); "` util.inspect(object,[showHidden],[глубина],[цвета]) — это функция, преобразующая любой объект в строку, обычно используемая для отладки и вывода ошибок. Он принимает по крайней мере один объект параметра, который является объектом для преобразования. Поля и файлы являются объектами, и для их вывода мы используем модуль util. Вы можете видеть, что результаты вывода следующие:

Мы используем это предложение:

Язык кода:javascript
копировать
 form.uploadDir = "./uploads";

Сохраните файлы, отправленные через форму, в папку «Загрузки».

Расширенная версия: Теперь мы надеемся, что после загрузки изображений и других файлов их можно будет сохранить в нужном нам формате: Мы видим, что в объекте выходных файлов есть атрибут пути. Теперь наша цель — изменить сохраненный путь в нужный нам формат.

1. Чтобы изменить путь к файлу, мы думаем использовать метод переименования в модуле fs. 2. Мы сохраняем предыдущий путь в качестве первого параметра функции переименования.

Язык кода:javascript
копировать
var oldpath =__dirname + "/"+ files.picture.path;

3. Получите расширение файла:

Язык кода:javascript
копировать
   var path = require("path");
var extname = path.extname(files.picture.name);

4. Имя файла назначения представляет собой текущее событие, четырехзначное случайное число и расширение файла.

Язык кода:javascript
копировать
  var sd = require("silly-datetime");
var ttt= sd.format(new Date(),'YYYYMMDDHHmm');
//Генерируем случайное число
var ran = parseInt(Math.random()*89999+10000);
var newpath = __dirname + "/uploads/"+ttt+ran+extname;

5. Передайте параметры в функцию

Язык кода:javascript
копировать
fs.rename(oldpath,newpath,function (err) { 

if(err){
throw Ошибка("Не удалось изменить имя");
}
res.writeHead(200,{
'Content-Type':'text/html;charset=UTF8'});
res.end("успех");
});

Таким образом, когда форма загружает файл изображения, его можно сохранить с нужным нам именем файла:

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Full stack программист и руководитель стека, укажите источник для перепечатки: https://javaforall.cn/185215.html Исходная ссылка: https://javaforall.cn

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода