Обзор
Эта статья предназначена для читателей, которые только начинают работать с Node.
В этой статье node+express используется для реализации простой функции загрузки изображения: пользователь нажимает на изображение для загрузки, оно переходит на страницу успешной загрузки и отображает загруженное изображение.
предисловие
Я искал информацию, чтобы начать работу с узлом, пытаясь реализовать функцию шаг за шагом, но подходящей информации нет. пока не увидишьwoohoo.node beginner.org/index-this-talent…, эта книга научит вас, какШаг за шагомВ сочетании с базовым API для создания простого приложения реализована простая функция загрузки изображений. Я наконец-то чувствую себя после просмотраНачинаяузел. Адрес исходного кода прикреплен к статье,GitHub.com/Мануэль Киес…, если вы чувствуете, что еще не начали работу с узлом, вы можете прочитать эту книгу.
Конечно, я предлагаю следовать руководству и шаг за шагом изменять код, а не клонировать исходный код напрямую.
вопрос
HTML-код, отображаемый на странице, приведенной далее в статье,response.write(body);
способ письма
function start(response) {
console.log("Request handler 'start' was called.");
var body = '<html>'+
'<head>'+
'<meta http-equiv="Content-Type" content="text/html; '+
'charset=UTF-8" />'+
'</head>'+
'<body>'+
'<form action="/upload" enctype="multipart/form-data" '+
'method="post">'+
'<input type="file" name="upload" multiple="multiple">'+
'<input type="submit" value="Upload file" />'+
'</form>'+
'</body>'+
'</html>';
response.writeHead(200, {"Content-Type": "text/html"});
response.write(body);
response.end();
}
В практических приложениях html-файлы не могут быть написаны таким образом, поэтому я научу вас использовать node+express для достижения той же функции, чтобы наш код выглядел более элегантно.
node+express реализует функцию загрузки изображений
окружающая обстановка
mac+node(v9.2.0)+express
установить экспресс
официальный сайт экспресс:www.expressjs.com.cn/
новая папкаnode-app
, создайте новую папку в папкеpackage.json
документ
{
"name": "node-app",
"version": "0.0.1",
"dependencies": {
"express": "^4.16.2",
}
}
бегатьnpm install
. новыйapp.js
, код показывает, как показано ниже
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
бегатьnode app.js
,Открытьlocalhost:3000, Программа уже работает
Размещайте статические файлы с помощью Express
Затем используйте Express для размещения статических файлов вnode-app
новая папка подpublic
, создайте два html файла
- start.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>请上传您的文件</title>
</head>
<body>
<form action="./upload.html" enctype="multipart/form-data" method="get">
<input type="file" name="upload" multiple="multiple">
<input type="submit" value="Upload file" />
</form>
</body>
</html>
- upload.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>上传成功</title>
</head>
<body>
<h1>上传成功</h1>
</body>
</html>
Исправлятьapp.js
,Увеличиватьapp.use('/public', express.static('public'));
. после модификацииapp.js
следующим образом
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.use('/public', express.static('public'));
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Теперь файлы в общем каталоге доступны.
Справочная документация:woohoo.express JS.com.can/starter/это он…
Перезапустите службу узла, откройтеhttp://localhost:3000/public/start.html
, после выбора загрузки файла страница автоматически перейдет на страницу успешной загрузки
Обработать загруженные изображения
Используйте модулиformidable
Обработать данные запроса. существуетpackage.json
увеличить в
"dependencies": {
"express": "^4.16.2",
"formidable": "^1.1.1"
}
бегатьnpm install
.
Загрузка файла, естественно, использует почтовый запрос, изменениеstart.html
, изменился наmethod="post"
<form action="/upload" enctype="multipart/form-data" method="post">
<input type="file" name="upload" multiple="multiple">
<input type="submit" value="Upload file" />
</form>
Экспресс-маршруты, используемые для обработки почтовых запросов
Ссылаться наwoohoo.express JS.com.can/starter/barca…
после редактированияapp.js
следующим образом:
var express = require('express');
var app = express();
var formidable = require("formidable");
fs = require("fs");
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.use('/public', express.static('public'));
app.post('/upload', function (req, res) {
var form = new formidable.IncomingForm();
console.log("about to parse");
form.parse(req, function(error, fields, files) {
console.log("parsing done");
console.log(files.upload.path);
fs.writeFileSync("public/test.png", fs.readFileSync(files.upload.path));
res.redirect("/public/upload.html") ;
});
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
существуетpublic
Изменить папкуupload.html
,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>上传成功</title>
</head>
<body>
<h1>上传成功</h1>
<img src="/public/test.png"/>
</body>
</html>
Ну, вы сделали. Перезапустите службу, откройтеhttp://localhost:3000/public/start.htmlВыберите изображение для загрузки, вы можете увидеть изображение, которое вы загрузили!
Исходный код прилагается,GitHub.com/lie8466/nod…
Спасибо за прочтение! Это мой процесс обучения, надеюсь, он вам поможет.