English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.js上传文件–在此Node.js教程中,我们将学习从Web客户端将文件上传到Node.js服务器。换句话说,客户端可以将文件上传到Node.js服务器。
要将文件上传到Node.js服务器,请按照以下逐步指南进行操作:
在此示例中,我们将使用http,fs和强大模块。http:用于服务器活动。节点fs:将上载的文件保存到服务器上的某个位置。强大:解析html表单数据。如果尚未安装上述模块,则可以立即使用NPM安装。在终端中运行以下命令以安装各个模块:
npm install http npm install fs npm install formidable |
使用以下表单准备一个HTML页面(upload_file.html),其中包括用于文件上传和表单提交的输入标签。
<form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form>
创建一个侦听端口8086的HTTP服务器(您可以更改端口),并为两个URL提供服务器,如下所示:
http.createServer(function (req, res) { if (req.url == '/uploadform') { // 如果请求网址包含“ / uploadform” // 用包含上载表格的HTML文件填充响应 }} else if (req.url == '}}/fileupload') { // 如果请求URL包含“ / fileupload” // 使用强大的模块 // Leer los datos del formulario (incluyendo el archivo subido) // y guardarlo en un lugar. ).listen(8086);
Utilice módulos poderosos para analizar elementos de formulario y guardar archivos en un lugar determinado. Después de subir el archivo, es posible que muestre un mensaje indicando que la subida del archivo fue exitosa. Originalmente, el archivo se guarda en una ubicación temporal. Podemos usar el método fs.rename() para mover el archivo a la ubicación deseada con una nueva ruta.
var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath: carpeta temporal donde se guarda el archivo var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // Copiar el archivo a una nueva ubicación fs.rename(oldpath, newpath, function (err) { if (err) throw err; // Puede usar otra página html para la respuesta res.write('¡El archivo se ha subido y movido!'); res.end();
A continuación se muestra un ejemplo completo de subida de archivos en Node.js:
Este ejemplo tiene dos archivos, como se muestra a continuación:
upload_file.html
<!DOCTYPE html> <html> <head> <title>Upload File</title> <style> body{text-align:center;} form{display:block;border:1px solid black;padding:20px;} </style> </head> <body> <h1>Upload files to Node.js Server</h1> <form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form> </body> </html
var http = require('http'); var fs = require('fs'); var formidable = require('formidable'); // 包含上传表单的html文件 var upload_html = fs.readFileSync("upload_file.html"); // 将其替换为保存上传文件的位置 var upload_path = "/home/arjun/espacio de trabajo/nodejs/upload_file/"; http.createServer(function (req, res) { if (req.url == '/uploadform') { res.writeHead;200); res.write(upload_html); return res.end(); }} else if (req.url == '}}/fileupload') { var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath: carpeta temporal donde se guarda el archivo var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // Copiar el archivo a una nueva ubicación fs.rename(oldpath, newpath, function (err) { if (err) throw err; // Puede usar otra página html para la respuesta res.write('¡El archivo se ha subido y movido!'); res.end(); ).listen(8086);
Ejecute el archivo de script de Node.js en el terminal con nodos
arjun@w3codebox:~/espacio de trabajo/nodejs/upload_file$ node nodejs-subir-file.js
Los archivos subidos se guardan en el archivo node.js-subir-al lado de file.js. Puede cambiar esta ubicación en el archivo de script node.js.
Abra el navegador web (cliente HTTP), luego haga clic en la URL http:// localhost:8086/uploadform
Haga clic en 'Examinar'.
Seleccione un archivo y luego haga clic en 'Abrir'.
Actualmente, el archivo se ha subido al formulario. Haga clic en el botón Upload de Node.js para analizar los elementos del formulario y guardar el archivo.
Verifique el archivo de script de Node.js y el servidor Node.js.
arjun@w3codebox:~/espacio de trabajo/nodejs/upload_file$ ls desenfoque1.jpg nodejs-subir-file.js upload_file.html
En este tutorial de Node.js - Subir archivos al servidor con Node.js,aprendimos a usar los poderosos módulos fs y http para subir archivos al servidor Node.js.