Использовать промежуточное программное обеспечение ExpressJS, например multer.
Примечание: приведенные ниже примеры НЕ предназначены для использования в производственных условиях. Ни HTML-код, ни явный js-сервер не используют никакой безопасности. Использование этого примера в рабочей среде приведет к тому, что ваша система и, возможно, ваша сеть будут открыты для атак.
Также обратите внимание: я предполагаю, что у вас есть очень простое знакомство с express js, в том числе, как сделать простые маршруты GET и POST.
Пусть У меня есть страница с этой простой HTML, который позволяет человеку, чтобы загрузить любой файл любого типа и размера на мой сайт:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Upload file to ExpressJS backend</title>
</head>
<body>
<form enctype="multipart/form-data" action="/do-upload" method="post">
<input type="file" name="file_from_user"/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
<form ...>
указывает, что она будет загружать multipart/form-data
полезную нагрузку мой /do-upload
конечная точка в виде POST
http-запрос. Итак, на моем сервере мне нужно ...
- Укажите конечную точку
/do-upload
.
- Разрешить
/do-upload
конечной точке принимать POST
http-запросы.
- Разрешить
/do-upload
Конечная точка принимать multipart/form-data
.
Элементы 1 и 2 решены довольно легко с помощью простой старой экспресс-маршрутизации js.
Твердая часть - это элемент 3, если мы ограничены только выражением js. К счастью, мы не ограничены, и поэтому мы будем использовать промежуточное ПО multer. Multer автоматически знает, как принимать многочастные формы-данные и расшифровывать загружаемые файлы из него (точная механика того, как файлы загружаются через многопрофильные запросы данных формы, является проблемой, которую я оставляю вам, читателю, обнаружить).
Мы создадим наш маршрут /do-upload
, добавим в него экземпляр промежуточного программного обеспечения multer и затем сделаем что-нибудь, когда кто-то попытается загрузить файл. Вот код:
var express = require('express'),
multer = require('multer'),
// Set up the middleware, which automatically handles files uploaded to it.
// The "dest" property specifies the location to save uploaded files.
// You will need to make sure this directory exists.
upload_middleware = multer({dest: 'tmp/uploads/'}),
app = express(),
// This is the name of the <input> element from the HTML that will
// send the file to the server.
form_element_name = 'file_from_user';
// The second parameter is how one injects middleware into a route in express js.
app.post('/do-upload', upload_middleware.single(form_element_name), function (request, response) {
console.log('Got a file!');
// The multer middleware adds the "file" property
// to the request object. The file property contains useful
// information about the file that was uploaded.
console.log('The original filename was: "%s".', request.file.originalname);
console.log('I saved the file to: %s.', request.file.path);
console.log('The file is %s bytes in size.', request.file.size);
// Finish the request with an HTTP 200 code and an informative message, so we don't leave user
// hanging in his or her browser.
response
.status(200)
.send('File uploaded successfully!');
});
// ... other routes
// ... app.listen call that starts your server
Получение экспресс-JS легко принять единую загрузку файла, а затем спрячьте печальную загрузить где-то в каталоге, на самом деле просто. Как я уже сказал, это не готово к производству. Ему нужна безопасность, которую я оставляю вам как вызов для вас.
Источники и дальнейшее чтение:
Можете ли вы объяснить это более ясно: D я новичок. Tks так много! –
@ M.Tae Я работаю над примером. Я напишу еще один комментарий здесь, когда закончу, и обновил свой ответ. – kevin628
@ M.Tae Я просто обновил свой ответ на примере. – kevin628