Используя запрос POST, формула для собственного приема в фоновом режиме:
req.addListener("data",function(chunk){
alldata += chunk;
})
//Когда все передачи завершены
req.addListener("end",function(){
console.log(alldata,toString());
req.end("success");
})
Вот пример использования нативногоpostФормула запроса принимается в фоновом режимеданные: Страница формы:
//Поскольку изображения будут загружены позже, нам нужно добавить атрибуты в форму. 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>
Процедура получения:
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) {
//Все текстовые поля и переключатели размещаются в полях, а все поля файлов — в файлах.
// 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. Вы можете видеть, что результаты вывода следующие:
Мы используем это предложение:
form.uploadDir = "./uploads";
Сохраните файлы, отправленные через форму, в папку «Загрузки».
Расширенная версия: Теперь мы надеемся, что после загрузки изображений и других файлов их можно будет сохранить в нужном нам формате: Мы видим, что в объекте выходных файлов есть атрибут пути. Теперь наша цель — изменить сохраненный путь в нужный нам формат.
1. Чтобы изменить путь к файлу, мы думаем использовать метод переименования в модуле fs. 2. Мы сохраняем предыдущий путь в качестве первого параметра функции переименования.
var oldpath =__dirname + "/"+ files.picture.path;
3. Получите расширение файла:
var path = require("path");
var extname = path.extname(files.picture.name);
4. Имя файла назначения представляет собой текущее событие, четырехзначное случайное число и расширение файла.
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. Передайте параметры в функцию
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