āļŠāļĢāļļāļāļŠāļąāđāļ āđ āļāđāļāļāđāļĢāļīāđāļĄāļāđāļēāļ
āđāļāļāļāļāļ§āļēāļĄāļāļĩāđāđāļĢāļēāļāđāļāļ°āļĄāļēāđāļĢāļĩāļĒāļāļĢāļđāđāļ§āļīāļāļĩāļāļēāļĢāļāļģāļĢāļ°āļāļāļāļąāļāđāļŦāļĨāļāđāļāļĨāđ āđāļāļĒāđāļāđ Node.js + Express.js āđāļĨāļ° Multer āļāļąāđāļāđāļāđāļĄāļēāļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļąāļāļāļąāļ Node.js + Express.js āđāļĨāļ° Multer āļ§āđāļēāļĄāļąāļāļāļ·āļāļāļ°āđāļĢ āļāļģāđāļĄāđāļĢāļēāļāđāļāļāđāļĨāļ·āļāļāđāļāđāļāļąāļ§āđāļŦāļĨāđāļēāļāļĩāđāđāļāļāļēāļĢāļāļģ āļ§āļīāļāļĩāļāļēāļĢāļāļīāļāļāļąāđāļ āļāļāđāļāļāļķāļāļāļģāđāļŦāđāļĢāļ°āļāļāļāļāļāđāļĢāļēāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļĨāđ āļāđāļēāđāļāļĢāļāļģāļĨāļąāļāļŠāļāđāļāļŦāļąāļ§āļāđāļāļāļĩāđāļāļĒāļđāđ āđāļĢāļēāļāđāđāļāļĨāļļāļĒāļāļąāļāļāđāļāđāļāļŦāļąāļ§āļāđāļāļāļąāļāđāļāđāļĨāļĒ
Node.js āļāļ·āļāļāļ°āđāļĢ
Node.js āļāļ·āļ Cross Platform Runtime Environment āļŠāļģāļŦāļĢāļąāļāļāļąāđāļ Server āļāļĩāđāļāļģāļāļēāļāļāđāļ§āļĒāļ āļēāļĐāļē javascript āļāđāļ§āļĒāļāļģāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļē web application āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļ§āļāļāļļāļĄāļāļēāļĢāļāļģāļāļēāļāļāļāļāđāļ§āđāļāļāļąāđāļāļāļąāđāļ Frontend āđāļĨāļ° Backend āđāļāđ āđāļāļĒāļĄāļĩ framework āļĄāļēāļāļĄāļēāļĒāļāļĩāđāļāļ°āļĄāļēāļāđāļ§āļĒāđāļŦāđāđāļĢāļēāļāļąāļāļāļē web application āđāļāđāļāđāļēāļĒāļāļķāđāļāđāļāļāļĩāļāđāļŦāđāđāļĨāļ·āļāļāđāļāđ āđāļĢāļēāļāļ°āļĄāļēāļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļąāļāļāļąāļ framework āļāļ·āđāļ Express.js āđāļĨāļ° Multer āđāļāļŦāļąāļ§āļāđāļāļāļąāļāđāļāļāļĢāļąāļ
Express.js āļāļ·āļāļāļ°āđāļĢ
Express.js āļāļ·āļ framework āļāļĩāđāļāļđāļāļāļąāļāļāļēāļĄāļēāļāļēāļāđāļĄāļāļđāļĨ http
āļāļāļ Node.js āđāļāđāļāļ°āļĄāļēāļāđāļ§āļĒāđāļŦāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļąāļāļāļēāļĢ Routing āđāļāđāļāđāļēāļĒāļāļķāđāļ āļŠāļāļąāļāļŠāļāļļāļāļāļēāļĢāļāļģ Middleware āļāļģāļāļēāļāđāļāđāļĢāļ§āļāđāļĢāđāļ§ āļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļĨāļ°āļāļ·āđāļ āđ āļāļĩāļāļĄāļēāļāļĄāļēāļĒ āļāļķāļāđāļāđāļ framework āļāļĩāđāļĒāļāļāļāļīāļĒāļĄāļĄāļēāđāļ Node.js āđāļĄāļ·āđāļāđāļĢāļēāļāđāļāļāļāļēāļĢāļāļąāļāļāļē web application āļāļķāđāļāđāļāļāļāļāļ§āļēāļĄāļāļĩāđ āđāļĢāļēāļāļ°āļĄāļēāđāļāđ Express.js āđāļāđāļāļāļąāļ
Multer āļāļ·āļāļāļ°āđāļĢ
Multer āđāļāđāļ middleware āļāļąāļ§āļāļķāļāļāļĩāđāļāļ°āļĄāļēāļāđāļ§āļĒāļāļąāļāļāļēāļĢ āļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāđāļāļāļąāđāļ Node.js āđāļāļĒāļāļĩāđāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāļāļāļēāļāļāļāļāđāļāļĨāđ āļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļāļ·āđāļāđāļāļĨāđ āļāļēāļĢāļāļģāļŦāļāļāļāļĢāļ°āđāļ āļāđāļāļĨāđ āđāļāđāļāļāđāļ āđāļāđāļāļĒāđāļēāļāļāđāļēāļĒāđāļāđ
āļāļēāļĢāļāļīāļāļāļąāđāļ Node.js āđāļĨāļ° NPM
āđāļāļāļąāđāļāļāļāļāļāļĩāđāđāļĢāļēāļāļ°āļāđāļāļāļāļīāļāļāļąāđāļ Node.JS āđāļĨāļ° NPM āđāļāđāļāļāļĒāđāļēāļāđāļĢāļ āđāļāļ·āđāļāļāļāļēāļ Node.JS āļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāļāļģāļāļēāļāđāļāđāļ Runtime Environment āļāđāļ§āļĒāļ āļēāļĐāļē Javascript āđāļĨāļ°āļĄāļĩ NPM āļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļēāļĢāđāļāļāđāļāļāļāđāļēāļāđ āļŠāļģāļŦāļĢāļąāļāļāļĩāđāļāļ°āđāļāđāđāļāļāļāļāļ§āļēāļĄāļāļĩāđ āđāļāļĒāļŠāļēāļĄāļēāļĢāļāļāļēāļ§āļāđāđāļŦāļĨāļāđāļāđāļāļĩāđāļĨāļīāđāļāļāđāļāļĩāđ Node.JS āđāļĨāļ° NPM
āđāļĄāļ·āđāļāļāļģāļāļēāļĢāļāļīāļāļāļąāđāļāđāļŠāļĢāđāļāļāļāļĨāļāļāļāđāļ§āļĒāļāļēāļĢāļāļīāļĄāļāđāļāļģāļŠāļąāđāļ node -v
āđāļ terminal āļāļ°āļāđāļāļāđāļāđāđāļĨāļ version āļāļāļāļāļĨāļąāļāļĄāļē
input āļāļĩāđāļāļīāļĄāļāđāđāļ terminal
node -v
output āļāļĩāđāđāļāđāļāļāļāļāļĨāļąāļāļĄāļē
v18.18.0
āļŠāļĢāđāļēāļāđāļāļĢāđāļāļ
āļ§āļīāļāļĩāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĢāđāļāļāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
- āļŠāļĢāđāļēāļ folder āđāļāļĢāđāļāļāļāđāļ§āļĒāļāļ·āđāļāļāļĩāđāđāļĢāļēāļāđāļāļāļāļēāļĢ āļŦāļĢāļ·āļāļāļīāļĄāļāđāļāļģāļŠāļąāđāļ mkdir āļāļēāļĄāļāđāļ§āļĒāļāļ·āđāļāđāļāļĢāđāļāļāļāļ terminal
- āļāļģāļāļēāļĢāđāļāļīāļ terminal āļāļĩāđāđāļāļāļĩāđ folder āļāđāļ§āļĒāļāļģāļŠāļąāđāļ cd āđāļāļĢāđāļāļāļāļāļāđāļĢāļē āļŠāļēāļĄāļēāļĢāļāđāļāļīāļ folder āđāļĨāļ° terminal āļāļ vscode āđāļāđ āđāļāļ·āđāļāļāļ§āļēāļĄāļŠāļ°āļāļ§āļ
- āļāļīāļĄāļāđāļāļģāļŠāļąāđāļ npm init -y āļāđāļēāđāļāļīāļĄ -y āļāđāļāļāđāļēāļĒāļāļ°āđāļāđāļāđāļē defalte āļāļąāđāļāļŦāļĄāļ āļāļ°āđāļĄāđāļĄāļĩāļāļēāļĢāļāļēāļĄāđāļ§āļĨāļēāļāļīāļāļāļąāđāļ āđāļāđāļāđāļēāļāđāļāļāļāļēāļĢāđāļāđāđāļāļāļēāļāļāļĒāđāļēāļ āđāļāļ°āļāļģāđāļĄāđāļāđāļāļāļāļīāļĄāļāđ -y āļāđāļāļāđāļēāļĒ
input āļāļĩāđāļāļīāļĄāļāđāđāļ terminal
mkdir My-file-upload-web
cd My-file-upload-web
npm init -y
output āļāļĩāđāđāļāđāļāļāļāļāļĨāļąāļāļĄāļē
Wrote to /Users/petch/Desktop/My-project/My-file-upload-web/package.json:
{
"name": "my-file-upload-web",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
āļāļ°āđāļāđāđāļāļĨāđ package.json āļāļķāđāļāļĄāļē 1 āđāļāļĨāđāļāļēāļĄāļ āļēāļ āļāļĩāđāļāļĩāđāđāļāļĨāđāļāļģāļāļēāļāļŦāļĨāļąāļāļāļāļāđāļĢāļēāđāļāļāļĩāđ index.js āļāļĢāļāļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļāļĨāļĩāđāļĒāļāļāļ·āđāļāđāļāđ āđāļāđāđāļĢāļēāļāļ°āļāđāļāļāļŠāļĢāđāļēāļāđāļāļĨāđ .js āļāļ·āđāļāđāļāļĩāļĒāļ§āļāļąāļāļāļķāđāļāļāđāļ§āļĒ āđāļāļĒāļāļ°āļĒāļąāļāđāļĄāđāđāļĢāļīāđāļĄāļŠāļĢāđāļēāļāļāļāļāļāļĩāđ āđāļāļĒāđāļĢāļēāļāļ°āđāļāļāļīāļāļāļąāđāļ Express.JS āđāļāđāļāļāļąāđāļāļāļāļāļāđāļāđāļāļāļąāļāļāđāļāļāļāļĢāļąāļ
āļāļēāļĢāļāļīāļāļāļąāđāļ Express.js + multer
āļāļīāļĄāļāđāļāļģāļŠāļąāđāļ npm install express multer āļāļ terminal āļāļ°āđāļāđ folder node_modules āđāļāļīāđāļĄāļāļķāđāļāļĄāļē āđāļĨāļ°āđāļ package.json āļāļ°āļĄāļĩāļāļēāļĢāđāļāļīāđāļĄāļāļĢāļāļŠāđāļ§āļ dependencies āļāļķāđāļāļĄāļē āļāļķāđāļāļāļ°āļāļāļāļ§āđāļēāļāļāļāļāļĩāđāđāļāļĢāđāļāļāļāļāļāđāļĢāļēāļĄāļĩāļāļēāļĢāļĨāļ node āļāļ°āđāļĢāļĨāļāđāļāļāđāļēāļ āļāļķāđāļāļŦāļĨāļąāļāļāļēāļāļĨāļāđāļŠāļĢāđāļāļāļ°āļāđāļāļāđāļāđ express āļāļąāļ multer āđāļāļīāđāļĄāļĄāļēāđāļāđāļāļāļąāļāļĨāļāđāļāļĨāļ§āđāļēāļĨāļ Express.js āļāļąāļ multer āđāļŠāļĢāđāļāđāļĢāļĩāļĒāļāļĢāđāļāļĒ
input āļāļĩāđāļāļīāļĄāļāđāđāļ terminal
npm install express multer
āļāļąāļ§āļāļĒāđāļēāļ output āļāļĩāđāđāļāđāļāļāļāļāļĨāļąāļāļĄāļē āļāļēāļāđāļĄāđāđāļŦāļĄāļ·āļāļāļāļąāļāļāļķāđāļāļāļĒāļđāđāļāļąāļāđāļ§āļāļĢāđāļāļąāđāļāļāļĩāđāļāļīāļāļāļąāđāļ
added 77 packages, and audited 78 packages in 3s
10 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
āļŦāļĨāļąāļāļāļēāļāļĨāļāđāļŠāļĢāđāļāļāļ°āļāđāļāļāđāļāđ folder node_modules āđāļĨāļ° package.json āđāļāđāđāļāļāļēāļĄāļ āļēāļ āđāļ§āļāļĢāđāļāļąāđāļāļāļēāļāļāđāļēāļāļāļąāļāđāļāđāļāļķāđāļāļāļĒāļđāđāļāļąāļāđāļ§āļĨāļēāļāļīāļāļāļąāđāļāļ§āđāļēāđāļ§āļāļĢāđāļāļąāđāļāļĨāđāļēāļŠāļļāļāļāļ·āļāđāļ§āļāļĢāđāļāļąāđāļāļāļ°āđāļĢ
āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļŦāļāđāļē web frontend
āļāļąāđāļāļāļāļāļāļĩāđāđāļĢāļēāļāđāļāļ°āļĄāļēāļŠāļĢāđāļēāļāļŦāļāđāļēāđāļ§āđāļāļŠāļģāļŦāļĢāļąāļāđāļŦāđāļāļđāđāđāļāđāļāļģāļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļĨāđ āļāđāļāļ°āđāļāđāļāļŦāļāđāļēāđāļ§āđāļ html template āļāļ·āđāļāļāļēāļ āđāļĨāļ°āđāļāļīāđāļĄ <input type=”file” /> āļāļķāđāļāļŦāļĄāļēāļĒāļāļ§āļēāļĄāļ§āđāļēāđāļŦāđāļāļđāđāđāļāđāļāļģāļāļēāļĢ input file āļāļĩāđāļāļĢāļāļŠāđāļ§āļāļāļĩāđ āđāļāļĒāļāļģāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĨāđ index.html āđāļĨāđāļ§ copy code āļāļēāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
Code āļŠāļģāļŦāļĢāļąāļ index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello multer</title>
</head>
<body>
<h1>Please upload file</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="photo" />
<input type="submit" value="Submit">
</form>
</body>
</html>
āļāļēāļĢāđāļāļĢāļĩāļĒāļĄāļŠāđāļ§āļāļāļģāļāļēāļ Backend
āļāļąāđāļāļāļāļāļāļĩāđāđāļĢāļēāļāđāļāļ°āļĄāļēāđāļāđ Express.js āļāļąāļ multer āđāļāļāļēāļĢāļāļģāļŠāđāļ§āļāļāļāļ server āđāļŦāđāļĢāļāļāļĢāļąāļāļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāļĢāļđāļāļ āļēāļāļāļēāļāļāļđāđāđāļāđ āđāļĄāļ·āđāļāļāļđāđāđāļāđāļāļģāļāļēāļĢāļāļąāļāđāļŦāļĨāļāļĢāļđāļāļāļēāļāļāļēāļāļŦāļāđāļēāđāļ§āđāļāļŠāđāļ§āļ frontend āđāļāļĒāļāļģāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĨāđ index.js āđāļĨāđāļ§ copy code āļāļēāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
Code āļŠāļģāļŦāļĢāļąāļ index.js
var express = require("express"); //import express āļāđāļ§āļĒāļāļēāļĢāđāļāđ require
var app = express(); //set express āđāļ§āđāđāļāđāļāļāļąāļ§āđāļāļĢ app
const multer = require('multer')
const upload = multer({ dest: 'uploads/' })
const port = 3000; //set āļāļąāļ§āđāļāļĢ port āđāļāđāļēāļāļąāļ 3000
//āđāļāđ get āđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļāļĨāđ index.html
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html')
})
//āđāļāđ post āđāļāļ·āđāļāļĢāļāļāļĢāļąāļāļāļēāļĢ upload
app.post('/upload', upload.single('photo'), (req, res) => {
res.send(req.file)
})
// āđāļāđ listen āđāļāļ·āđāļāļĢāļ°āļāļļāļ§āđāļē website āļāļ°āļāļģāļāļēāļāļāļĩāđ port āļāļ°āđāļĢ āđāļĢāļēāđāļāđāđāļŦāđāđāļĢāļĩāļĒāļāļāļąāļ§āđāļāļĢ port
app.listen(port, () => {
console.log(`Server running at <http://localhost>:${port}/`);
})
āļāļģāļāļēāļĢāļāļīāļĄāļāđāļāļģāļŠāļąāđāļ node āļāļēāļĄāļāđāļ§āļĒāļāļ·āđāļāđāļāļĨāđ .js āļāļāļāđāļĢāļēāđāļ terminal
node index.js
output āļāļĩāđāđāļāđāļāļāļāļāļĨāļąāļāļĄāļē āļāļ°āđāļāđāļāļāļēāļĄāļāļĩāđāđāļĢāļēāđāļŠāđāđāļ console.log āđāļŠāļāļāļ§āđāļē website āļāļāļāđāļĢāļēāļāļģāļāļēāļāđāļĨāđāļ§
Server running at <http://localhost>:3000/
āđāļŦāđāļāļģāļāļēāļĢāđāļāļīāļ http://localhost:3000/ āļāļ web browser āļāļ°āļāļāļŦāļāđāļēāđāļ§āđāļāļāļāļāđāļĢāļēāļāļēāļĄāļ āļēāļ
āđāļĨāļ°āđāļāļīāļāđāļāļĢāđāļāļāļāļāļāđāļĢāļēāļāļ°āļāļāļ§āđāļēāļĄāļĩāļāļēāļĢāļŠāļĢāđāļēāļ folder uploads āļĄāļēāđāļŦāđāđāļĢāļĩāļĒāļāļĢāđāļāļĒāļŦāļĨāļąāļāļāļēāļāđāļĢāļēāļāļģāļāļēāļĢāļāļ run node index.js
āđāļĄāļ·āđāļāđāļ§āđāļāļāļāļāđāļĢāļēāļāļĢāđāļāļĄāđāļĨāđāļ§ āđāļāļ·āđāļāļāļāļēāļāđāļĢāļēāļāļģāļāļēāļĢāļĢāļ°āļāļļāļāļĢāļ°āđāļ āļāđāļāļĨāđāđāļāđāļāļĢāļđāļāļ āļēāļāđāļ code āđāļŦāđāļāļģāļāļēāļĢāļāļāļĨāļāļāļāļąāļāđāļŦāļĨāļāļ āļēāļāļāļ°āđāļĢāļāđāđāļāđ āđāļĨāđāļ§āļāļģāļāļēāļĢāļāļ submit āļāļ°āļāđāļāļāđāļāđ return json āļāļĨāļąāļāļĄāļēāļāļēāļĄāļ āļēāļ
āļāļąāļ§āļāļĒāđāļēāļ json āļāļĩāđ return āļāļĨāļąāļāļĄāļē
{
"fieldname":"photo",
"originalname":"Image 17-10-2566 BE at 11.09.jpeg",
"encoding":"7bit",
"mimetype":"image/jpeg",
"destination":"uploads/",
"filename":"baee6dcc8ab7b5de4c6d4963dbec5d19",
"path":"uploads/baee6dcc8ab7b5de4c6d4963dbec5d19",
"size":29623
}
āļāļāļīāļāļēāļĒāđāļāđāļĨāļ° key āđāļ json
- fieldname
- originalname : āļāļ·āđāļāđāļāļĨāđāļāļĩāđāđāļĢāļēāļāļąāļāđāļŦāļĨāļ
- encoding : āđāļāđāļēāļĢāļŦāļąāļŠāļāđāļ§āļĒāļ§āļīāļāļĩāļāļēāļĢāđāļ
- mimetype : āļāļāļīāļāļāļāļāđāļāļĨāđ
- destination : folder āļāļĩāđāđāļāđāļāđāļāļĨāđ
- filename : āļāļ·āđāļāđāļāļĨāđāļŦāļĨāļąāļāļāļēāļāļāļĩāđāļāļąāļāđāļŦāļĨāļ
- path : location āļāļāļāđāļāļĨāđ āļāļĢāļ°āļāļāļāļāđāļ§āļĒ (folder + āļāļ·āđāļāđāļāļĨāđ)
- size : āļāļāļēāļāļāļāļāđāļāļĨāđ
āļāļāļāļāļēāļāļāļ°āđāļāđ json return āļāļĨāļąāļāļĄāļēāđāļĨāđāļ§ āļāļ°āļāđāļāļāļĄāļĩāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļĨāđāđāļ folder upload āļāđāļ§āļĒ āđāļŠāļāļāļ§āđāļēāļĢāļ°āļāļāļāļąāļāđāļĨāļāđāļāļĨāđāļāļāļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļāļēāļāđāļāđāđāļĢāļĩāļĒāļāļĢāđāļāļĒ āđāļāđāļāļ°āđāļŦāđāļāļ§āđāļēāļāļ·āđāļāđāļāļĨāđāļĒāļąāļāđāļāđāļāļāļ·āđāļāđāļāļāļŠāļļāđāļĄāđāļĨāļ° folder āļĒāļąāļāđāļāđāļ default āļāļĩāđāļĄāļēāļāļēāļ multer āđāļāļāļąāđāļāļāļāļāļāđāļāđāļāđāļĢāļēāļāļ°āļĄāļēāđāļĢāļĩāļĒāļāļĢāļđāđāļ§āļīāļāļĩāļāļēāļĢāļāļģāļŦāļāļāļāļ·āđāļāđāļāļĨāđ āđāļĨāļ°āļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāļ·āđāļ āđ āđāļŦāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāļāđāļāļēāļāđāļāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļąāļāļāļēāļāļāļāļāđāļāđāļĨāļ°āļāļāļāļĢāļąāļ
āļāļēāļĢāļāļĢāļąāļāđāļāđāļ Multer
āđāļāļāļēāļĢāļāļąāđāļāļāđāļē folder āļāļĩāđāļāļ°āđāļāđāļāđāļāļĨāđāđāļĨāļ°āļāļąāđāļāļāļ·āđāļāđāļāļĨāđ āđāļŦāđāļāļģ code āļāļēāļĄāļāđāļēāļāļĨāđāļēāļāļāļĩāđ āļāļģāđāļāđāļŠāđāđāļ index.js āđāļĨāđāļ§āļāļģāļāļēāļĢāđāļāđāđāļ const upload āđāļāđāļ const upload = multer({ storage }) āđāļāļ·āđāļāđāļāđāļāļāļēāļĢāļāļĩāđāđāļāļāļĩāđ const storage āļāļĩāđāđāļĢāļēāļāļģāļāļēāļĢāļāļąāđāļāļāđāļē folder āļāļĩāđāļāļ°āđāļāđāļāđāļāļĨāđāđāļĨāļ°āļāļ·āđāļāđāļāļĨāđāđāļ§āđāđāļĨāđāļ§
const storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './my-folders') // folder āļāļĩāđāđāļĢāļēāļāđāļāļāļāļēāļĢāđāļāđāļāđāļāļĨāđ
},
filename: function (req, file, callback) {
callback(null, file.originalname) //āđāļŦāđāđāļāđāļāļ·āđāļāđāļāļĨāđ original āđāļāđāļāļāļ·āđāļāļŦāļĨāļąāļāļāļąāļāđāļŦāļĨāļ
},
})
const upload = multer({ storage })
āļŦāļĨāļąāļāļāļēāļāļāļąāđāļāđāļĢāļēāļāļ°āļāļģāļāļēāļĢāļŠāļĢāđāļēāļ folder my-folders āđāļĨāđāļ§āļĨāļāļāļāļģāļāļēāļĢ run node index.js āđāļŦāļĄāđ āđāļĨāđāļ§āļāļąāļāđāļŦāļĨāļāđāļāļĨāđāđāļŦāļĄāđāļāļĩāļāļāļĢāļąāđāļ āļāļ°āļāļāļ§āđāļēāđāļāļĨāđāļāļ°āļāļđāļāđāļāđāļāđāļ§āđāļāļēāļĄ folder āļāļĩāđāđāļĢāļēāļāļąāđāļāđāļ§āđ āđāļĨāļ°āļāļ·āđāļāđāļĄāđāđāļāđāļāđāļāļāļŠāļļāđāļĄāđāļĨāđāļ§
āļāļāļīāļāļēāļĒāđāļāļīāđāļĄāđāļāļīāļĄ
destination
āļĢāļ°āļāļļāđāļāļĨāđāļāļāļĢāđāļāļĩāđāļāļ°āļāļąāļāđāļŦāļĨāļfilename: function
āļāļģāļŦāļāļāļāļ·āđāļāđāļāļĨāđāđāļāđ āļāļąāļ§āļāļĒāđāļēāļāđāļāđfile.originalname
āļŠāđāļāļāđāļēāļĒāļāđāļāļāļāļēāļāļāļąāļ
āļāļ°āđāļŦāđāļāļ§āđāļēāļāļēāļāļāļąāļ§āļāļĒāđāļēāļāđāļāļāļāļāļ§āļēāļĄāļāļĩāđ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāļĢāļ°āļāļāļāļąāļāđāļŦāļĨāļāļāđāļ§āļĒ Node.js + Express.js āđāļĨāļ° Multer āđāļāđāļāļĒāđāļēāļāđāļĄāđāļĒāļēāļ āđāļāļĢ āđ āļāđāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđ āđāļāļĢāļāļĩāđāļāļīāļāļ§āđāļēāđāļāđāļāļĩāđāļĒāļąāļāđāļĄāđāļāļāļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāđāļāđāļ§āđāļāđāļāļāđāļāļāļ multer npm āļĒāļąāļāļĄāļĩāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāļ·āđāļ āđ āļāļĩāļāļĄāļēāļāļĄāļēāļĒāļāļĩāđāđāļāđāļĨāļ°āļāļāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāļāļĢāļąāļāđāļāđāđāļŦāđāđāļāđāļēāđāļāļĢāđāļāļāļāļāļāđāļĢāļēāđāļāđāļāļĩāļ āđāļāđāļāļāļēāļĢāļāļģāļŦāļāļāļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ āļāļēāļĢāļāļģāđāļŦāđāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāđāļāđāļŦāļĨāļēāļĒ āđ āđāļāļĨāđāļāļĢāđāļāļĄāļāļąāļ āđāļāđāļāļāđāļ āļŠāļļāļāļāđāļēāļĒāļāļĩāđāļāđāļŦāļ§āļąāļāļ§āđāļēāļāļļāļāļāļāļāļ°āđāļāđāļāļ§āļēāļĄāļĢāļđāđāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļĩāđāđāļāđāđāļāļāļģāđāļāļĢāđāļāļāļāļāļāđāļāđāļĨāļ°āļāļāđāļāđāļāļĢāļąāļ āļāļāļāļāļļāļāļāļĢāļąāļ
āļāđāļēāļāļāļīāļ
- NodeJS āļāļ·āļ āļāļ°āđāļĢ ? āļĄāļēāļāļģāļāļ§āļēāļĄāļĢāļđāđāļāļąāļāļāļąāļ§āļāđāļ§āļĒāļāļąāļāļāļēāđāļ§āđāļāđāļāļāđāļĒāļāļāļāļīāļĒāļĄ ! āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļ https://blog.openlandscape.cloud/nodejs
- āļĢāļđāđāļāļąāļāļāļąāļ JavaScript āđāļĨāļ° Node.js āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļhttps://kongruksiam.medium.com/%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-javascript-%E0%B9%81%E0%B8%A5%E0%B8%B0-nodejs-8b5041853eae
- āļāļēāļĢāđāļāđāļāļēāļ Express.Js āļāļģāđāļ§āđāļāđāļāļāđāļāļ Node.Js āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļ http://marcuscode.com/tutorials/nodejs/introducing-nodejs
- multer – npm āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļ https://www.npmjs.com/package/multer?fbclid=IwAR3M3x2UC-hKrCK4Ot4NiqHnjU7AflEtsFkoUrea8zYhBkf0Gx1V803GkUA
- Node.js : āļāļēāļĢ Upload āđāļāļĨāđāļāđāļ§āļĒāļĄāļāļāļđāļĨ multer āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļ https://dev.to/bhurisub/node-js-upload-multer-1j7g
- āļāļģāļĢāļ°āļāļāļāļąāļāđāļŦāļĨāļāđāļāļĨāđāļāđāļ§āļĒ Node.js + Multer āļŠāļ·āļāļāđāļāđāļĄāļ·āđāļ 15 āļāļļāļĨāļēāļāļĄ 2566 āļāļēāļ https://blog.devahoy.com/blog/file-upload-nodejs-multer