การอัปโหลดไฟล์ใน Node.js มีหลายวิธีและไลบรารีที่สามารถช่วยให้คุณดำเนินการนี้ได้อย่างง่ายดาย ในที่นี้เราจะใช้ไลบรารี express
และ multer
เพื่ออัปโหลดไฟล์ในแอปพลิเคชัน Node.js:
ติดตั้ง Express และ Multer:
ก่อนอื่นให้ติดตั้ง Express และ Multer โดยใช้ npm หรือ yarn:1
npm install express multer
สร้างโครงการ Express:
สร้างแอปพลิเคชัน Express ด้วยการสร้างไฟล์ JavaScript หรือ TypeScript โดยใช้express-generator
หรือสร้างด้วยตนเอง ดังนี้:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30const express = require('express');
const multer = require('multer');
const app = express();
const port = 3000;
// กำหนดที่เก็บไฟล์อัปโหลด
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // กำหนดให้ไฟล์ถูกบันทึกไว้ในโฟลเดอร์ uploads/
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});
const upload = multer({ storage: storage });
// เริ่มต้นแอปพลิเคชัน Express
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
// เรียกใช้งานการอัปโหลดไฟล์
app.post('/upload', upload.single('myFile'), (req, res) => {
res.send('ไฟล์ถูกอัปโหลดเรียบร้อย');
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});สร้างไฟล์ HTML สำหรับอัปโหลดไฟล์:
สร้างไฟล์ HTML ที่ใช้สำหรับอัปโหลดไฟล์ ตัวอย่าง HTML ดังนี้:1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<title>อัปโหลดไฟล์</title>
</head>
<body>
<h1>อัปโหลดไฟล์</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="myFile" />
<input type="submit" value="อัปโหลด" />
</form>
</body>
</html>เริ่มแอปพลิเคชัน:
รันแอปพลิเคชัน Node.js ของคุณโดยใช้คำสั่ง:1
node app.js
ทดสอบ:
เข้าถึงแอปพลิเคชันของคุณผ่านเว็บเบราว์เซอร์ที่ URLhttp://localhost:3000
และลองอัปโหลดไฟล์จากแบบฟอร์ม.
ไฟล์ที่ถูกอัปโหลดจะถูกบันทึกในโฟลเดอร์ uploads/
โดยใช้ชื่อไฟล์ที่มีการเพิ่มเข้าไปด้วย timestamp เพื่อป้องกันการซ้ำซ้อน.
นี่คือเพียงตัวอย่างการอัปโหลดไฟล์ใน Node.js โดยใช้ Express และ Multer คุณสามารถปรับแต่งและขยายตัวอย่างนี้ตามความต้องการของคุณเพื่อรองรับการอัปโหลดไฟล์ในโปรเจค Node.js ของคุณ.