Node.js上傳文件–在此Node.js教程中,我們將學習從Web客戶端將文件上傳到Node.js服務器。換句話說,客戶端可以將文件上傳到Node.js服務器。
要將文件上傳到Node.js服務器,請按照以下逐步指南進行操作:
在此示例中,我們將使用http,fs和強大模塊。http:用于服務器活動。節(jié)點fs:將上載的文件保存到服務器上的某個位置。強大:解析html表單數(shù)據(jù)。如果尚未安裝上述模塊,則可以立即使用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>
創(chuàng)建一個偵聽端口8086的HTTP服務器(您可以更改端口),并為兩個URL提供服務器,如下所示:
http.createServer(function (req, res) {
if (req.url == '/uploadform') {
// 如果請求網(wǎng)址包含“ / uploadform”
// 用包含上載表格的HTML文件填充響應
} else if (req.url == '/fileupload') {
// 如果請求URL包含“ / fileupload”
// 使用強大的模塊
// 讀取表單數(shù)據(jù)(包括上載的文件)
// 并將文件保存到一個位置。
}
}).listen(8086);使用強大的模塊,解析表單元素并將文件保存到某個位置。文件上傳后,您可能會顯示一條消息,說明文件上傳成功。最初,文件被保存到一個臨時位置。我們可以使用fs.rename()方法,使用新路徑將文件移動到所需位置。
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
// oldpath:文件保存到的臨時文件夾
var oldpath = files.filetoupload.path;
var newpath = upload_path + files.filetoupload.name;
// 將文件復制到新位置
fs.rename(oldpath, newpath, function (err) {
if (err) throw err;
// 您可能會用另一個html頁面進行響應
res.write('File uploaded and moved!');
res.end();
});
});以下是Node.js上傳文件的完整工作示例
此示例有兩個文件,如下所示:
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>
</htmlvar 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/workspace/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:文件保存到的臨時文件夾
var oldpath = files.filetoupload.path;
var newpath = upload_path + files.filetoupload.name;
// 將文件復制到新位置
fs.rename(oldpath, newpath, function (err) {
if (err) throw err;
// 您可能會用另一個html頁面進行響應
res.write('File uploaded and moved!');
res.end();
});
});
}
}).listen(8086);在帶有節(jié)點的終端中運行Node.js腳本文件
arjun@nhooo:~/workspace/nodejs/upload_file$ node nodejs-upload-file.js
上傳的文件保存在node.js文件nodejs-upload-file.js旁邊。您可以在node.js腳本文件中更改此位置。
打開Web瀏覽器(HTTP客戶端),然后單擊URL http:// localhost:8086/uploadform
點擊瀏覽。
選擇一個文件,然后單擊“打開”。
當前,文件已上傳到表單。單擊Node.js的Upload按鈕來解析表單元素并保存文件。
檢查node.js腳本文件旁邊的Node.js服務器。
arjun@nhooo:~/workspace/nodejs/upload_file$ ls blur1.jpg nodejs-upload-file.js upload_file.html
在本Node.js教程– Node.js將文件上傳到服務器中,我們學習了使用強大的fs和http模塊將文件上傳到Node.js服務器。