{"id":82870,"date":"2024-11-07T12:10:48","date_gmt":"2024-11-07T08:40:48","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/"},"modified":"2024-11-07T12:10:48","modified_gmt":"2024-11-07T08:40:48","slug":"handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/","title":{"rendered":"\u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u062f\u0631 Node.js \u0628\u0627 \u0645\u0648\u0644\u062a\u0631: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u06cc\u06a9 \u0646\u06cc\u0627\u0632 \u0631\u0627\u06cc\u062c \u0627\u0633\u062a. \u0686\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647\u060c \u0627\u0633\u0646\u0627\u062f \u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631\u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0622\u067e\u0644\u0648\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u062f\u0627\u0631\u0646\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js \u0628\u0627 Express\u060c \u06a9\u0641\u0627\u0644 \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Multer \u062f\u0631 Node.js \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0646\u0635\u0628\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062a\u062f\u0627\u0648\u0644 \u0631\u0627 \u0628\u0627 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u06a9\u062f \u067e\u0648\u0634\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<p>\u0645\u0648\u0644\u062a\u0631 \u0686\u06cc\u0633\u062a\u061f<br \/>\n\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 Express<\/p>\n<p>\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<br \/>\n\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<br \/>\n\u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc (\u0645\u062b\u0627\u0644 S3)<\/p>\n<p>\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639<br \/>\n\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<br \/>\n\u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644<br \/>\n\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0645\u0648\u0644\u062a\u0631<br \/>\n\u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<br \/>\n\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>  \u0645\u0648\u0644\u062a\u0631 \u0686\u06cc\u0633\u062a\u061f<\/p>\n<p>\u0645\u0648\u0644\u062a\u0631 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a multipart\/form-data\u060c \u06cc\u06a9 \u0641\u0631\u0645\u062a \u0631\u0627\u06cc\u062c \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0627\u0633\u062a. \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u0627\u06a9\u0633\u067e\u0631\u0633 \u0648 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644: \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u062e\u062f\u0645\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc.<\/p>\n<p>\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644: \u0627\u0645\u06a9\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647: \u0628\u0647 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0622\u067e\u0644\u0648\u062f \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u062f\u0627\u062f\u0647 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0645\u0648\u0644\u062a\u0631\u060c \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 npm \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>npm install multer<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 Express<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Multer \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Express \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645. \u0646\u062d\u0648\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<p>const express = require(&#8216;express&#8217;);<br \/>\nconst multer = require(&#8216;multer&#8217;);<br \/>\nconst app = express();<\/p>\n<p>\/\/ Configure Multer for basic usage<br \/>\nconst upload = multer({ dest: &#8216;uploads\/&#8217; }); \/\/ Destination folder for uploaded files<\/p>\n<p>\/\/ Single File Upload Route<br \/>\napp.post(&#8216;\/upload&#8217;, upload.single(&#8216;file&#8217;), (req, res) =&gt; {<br \/>\n  res.send(&#8216;File uploaded successfully!&#8217;);<br \/>\n});<\/p>\n<p>app.listen(3000, () =&gt; console.log(&#8216;Server running on port 3000&#8217;));<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644:<\/p>\n<p>upload.single(&#8216;file&#8217;): \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0627\u062d\u062f \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u0628\u0627 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f file.<br \/>\n\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u062f\u0631 uploads\/ \u067e\u0648\u0634\u0647<\/p>\n<p>  \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<\/p>\n<p>\u0645\u0648\u0644\u062a\u0631 \u062f\u0648 \u06af\u0632\u06cc\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9: \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647: \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0627\u0641\u0631 (\u0645\u0641\u06cc\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647) \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  1. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0631 \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0642\u0635\u062f \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>const storage = multer.diskStorage({<br \/>\n  destination: (req, file, cb) =&gt; cb(null, &#8216;uploads\/&#8217;), \/\/ Folder location<br \/>\n  filename: (req, file, cb) =&gt; {<br \/>\n    const uniqueSuffix = Date.now() + &#8216;-&#8216; + Math.round(Math.random() * 1E9);<br \/>\n    cb(null, uniqueSuffix + &#8216;-&#8216; + file.originalname);<br \/>\n  }<br \/>\n});<\/p>\n<p>const upload = multer({ storage: storage });<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>destination: \u067e\u0648\u0634\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>filename: \u0628\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0645\u0647\u0631 \u0632\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0648\u062f\u0646).<\/p>\n<p>  2. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<\/p>\n<p>\u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0627\u0641\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0645\u062f\u062a \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0628\u062f\u0648\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u062f\u06cc\u0633\u06a9 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p>const upload = multer({ storage: multer.memoryStorage() });<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc: \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 AWS S3<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f\u060c \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc (\u0645\u0627\u0646\u0646\u062f AWS S3) \u0627\u063a\u0644\u0628 \u062a\u0631\u062c\u06cc\u062d \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u0628\u0627 S3\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f multer-s3.<\/p>\n<p>npm install aws-sdk multer-s3<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>const aws = require(&#8216;aws-sdk&#8217;);<br \/>\nconst multerS3 = require(&#8216;multer-s3&#8217;);<\/p>\n<p>aws.config.update({ region: &#8216;your-region&#8217; });<\/p>\n<p>const s3 = new aws.S3();<\/p>\n<p>const upload = multer({<br \/>\n  storage: multerS3({<br \/>\n    s3: s3,<br \/>\n    bucket: &#8216;your-s3-bucket-name&#8217;,<br \/>\n    metadata: (req, file, cb) =&gt; cb(null, { fieldName: file.fieldname }),<br \/>\n    key: (req, file, cb) =&gt; cb(null, Date.now().toString() + &#8216;-&#8216; + file.originalname)<br \/>\n  })<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0633\u0637\u0644 S3 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0622\u067e\u0644\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0631\u0627 \u062f\u0648\u0631 \u0645\u06cc\u200c\u0632\u0646\u062f.<\/p>\n<p>  \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639<\/p>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0642\u0637 \u0641\u0631\u0645\u062a\u200c\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u062e\u0627\u0635 (\u0645\u062b\u0644\u0627\u064b \u062a\u0635\u0627\u0648\u06cc\u0631) \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f fileFilter \u06af\u0632\u06cc\u0646\u0647<\/p>\n<p>const fileFilter = (req, file, cb) =&gt; {<br \/>\n  \/\/ Accept only image files<br \/>\n  if (file.mimetype.startsWith(&#8216;image\/&#8217;)) {<br \/>\n    cb(null, true); \/\/ Accept file<br \/>\n  } else {<br \/>\n    cb(new Error(&#8216;Only image files are allowed!&#8217;), false); \/\/ Reject file<br \/>\n  }<br \/>\n};<\/p>\n<p>const upload = multer({<br \/>\n  storage: storage,<br \/>\n  fileFilter: fileFilter<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u062d\u062c\u06cc\u0645\u060c a \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f limits \u06af\u0632\u06cc\u0646\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0647 1 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>const upload = multer({<br \/>\n  storage: storage,<br \/>\n  limits: { fileSize: 1 * 1024 * 1024 } \/\/ 1 MB limit<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644<\/p>\n<p>\u0645\u0648\u0644\u062a\u0631 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f \u0641\u0627\u06cc\u0644 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\/\/ For multiple files with the same field name<br \/>\napp.post(&#8216;\/uploadMultiple&#8217;, upload.array(&#8216;files&#8217;, 5), (req, res) =&gt; {<br \/>\n  res.send(&#8216;Files uploaded successfully!&#8217;);<br \/>\n});<\/p>\n<p>\/\/ For multiple fields with different field names<br \/>\nconst uploadMultiple = multer().fields([<br \/>\n  { name: &#8216;file1&#8217;, maxCount: 1 },<br \/>\n  { name: &#8216;file2&#8217;, maxCount: 2 }<br \/>\n]);<\/p>\n<p>app.post(&#8216;\/uploadMultipleFields&#8217;, uploadMultiple, (req, res) =&gt; {<br \/>\n  res.send(&#8216;Multiple files uploaded successfully!&#8217;);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>upload.array(&#8216;files&#8217;, 5): \u0627\u0645\u06a9\u0627\u0646 \u0622\u067e\u0644\u0648\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 5 \u0641\u0627\u06cc\u0644 \u062f\u0631 \u06cc\u06a9 \u0642\u0633\u0645\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>upload.fields: \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627\u06cc \u0641\u06cc\u0644\u062f \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0645\u0648\u0644\u062a\u0631<\/p>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a. \u0645\u0648\u0644\u062a\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0646\u0648\u0639 \u062e\u0637\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<p>app.post(&#8216;\/upload&#8217;, (req, res) =&gt; {<br \/>\n  upload.single(&#8216;file&#8217;)(req, res, (err) =&gt; {<br \/>\n    if (err instanceof multer.MulterError) {<br \/>\n      \/\/ Multer-specific error<br \/>\n      res.status(500).send(&#8216;Multer error: &#8216; + err.message);<br \/>\n    } else if (err) {<br \/>\n      \/\/ General error<br \/>\n      res.status(500).send(&#8216;Error: &#8216; + err.message);<br \/>\n    } else {<br \/>\n      res.send(&#8216;File uploaded successfully!&#8217;);<br \/>\n    }<br \/>\n  });<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u0644\u062a\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>\u0622\u067e\u0644\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647: \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647 \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0646\u062f\u060c \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u062f\u0631 S3 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0646\u0627\u062f: \u0627\u0633\u0646\u0627\u062f \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0631\u0632\u0648\u0645\u0647\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PDF) \u0631\u0627 \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u06cc\u0644\u062a\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0631\u0633\u0627\u0646\u0647 \u0627\u06cc \u062f\u0631 \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9: \u0641\u0631\u0648\u0634\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f \u062a\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0646\u062f\u060c \u0646\u0648\u0639 \u0641\u0627\u06cc\u0644 \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u0622\u0646 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u0633\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/p>\n<p>\u0645\u0648\u0644\u062a\u0631 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0622\u067e\u0644\u0648\u062f \u0645\u062e\u062a\u0644\u0641\u060c \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0648\u0686\u06a9 \u06cc\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u0633\u0637\u062d \u062a\u0648\u0644\u06cc\u062f \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644 \u0628\u0627\u0634\u06cc\u062f\u060c \u0645\u0648\u0644\u062a\u0631 \u0634\u0645\u0627 \u0631\u0627 \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9! \ud83d\ude80<\/p>\n<div data-article-id=\"2083129\" id=\"article-body\">\n<p>\u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u06cc\u06a9 \u0646\u06cc\u0627\u0632 \u0631\u0627\u06cc\u062c \u0627\u0633\u062a. \u0686\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647\u060c \u0627\u0633\u0646\u0627\u062f \u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631\u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0622\u067e\u0644\u0648\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u062f\u0627\u0631\u0646\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js \u0628\u0627 Express\u060c <strong>\u06a9\u0641\u0627\u0644<\/strong> \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Multer \u062f\u0631 Node.js \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0646\u0635\u0628\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062a\u062f\u0627\u0648\u0644 \u0631\u0627 \u0628\u0627 \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u06a9\u062f \u067e\u0648\u0634\u0634 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<hr\/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\" >\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%85%D9%88%D9%84%D8%AA%D8%B1_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u0645\u0648\u0644\u062a\u0631 \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%85%D9%88%D9%84%D8%AA%D8%B1_%D8%A8%D8%A7_Express\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 Express<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C_%D8%A8%D8%A7_%DA%AF%D8%B2%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#1_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AF%DB%8C%D8%B3%DA%A9\" >1. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#2_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87\" >2. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%81%D8%B6%D8%A7%DB%8C_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D8%A8%D8%B1%DB%8C_%D9%85%D9%88%D9%84%D8%AA%D8%B1_%D8%A8%D8%A7_AWS_S3\" >\u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc: \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 AWS S3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%81%DB%8C%D9%84%D8%AA%D8%B1_%DA%A9%D8%B1%D8%AF%D9%86_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7_%D8%A8%D8%B1_%D8%A7%D8%B3%D8%A7%D8%B3_%D9%86%D9%88%D8%B9\" >\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87_%D9%81%D8%A7%DB%8C%D9%84\" >\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%DA%86%D9%86%D8%AF%DB%8C%D9%86_%D9%81%D8%A7%DB%8C%D9%84\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AE%D8%B7%D8%A7_%D8%AF%D8%B1_%D9%85%D9%88%D9%84%D8%AA%D8%B1\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0645\u0648\u0644\u062a\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%AF%D8%B1_%D8%AF%D9%86%DB%8C%D8%A7%DB%8C_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\" >\u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/handling-file-uploads-in-nodejs-with-multer-a-comprehensive-guide-1f7e\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\"><\/span>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>\u0645\u0648\u0644\u062a\u0631 \u0686\u06cc\u0633\u062a\u061f<\/li>\n<li>\u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/li>\n<li>\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 Express<\/li>\n<li>\n<p>\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<\/p>\n<ul>\n<li>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<\/li>\n<li>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<\/li>\n<li>\u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc (\u0645\u062b\u0627\u0644 S3)<\/li>\n<\/ul>\n<\/li>\n<li>\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639<\/li>\n<li>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<\/li>\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644<\/li>\n<li>\u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0645\u0648\u0644\u062a\u0631<\/li>\n<li>\u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/li>\n<li>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/li>\n<\/ol>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%88%D9%84%D8%AA%D8%B1_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0645\u0648\u0644\u062a\u0631 \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0648\u0644\u062a\u0631 \u06cc\u06a9 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a <code>multipart\/form-data<\/code>\u060c \u06cc\u06a9 \u0641\u0631\u0645\u062a \u0631\u0627\u06cc\u062c \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648\u0628 \u0627\u0633\u062a. \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0622\u0646 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a <strong>\u0627\u06a9\u0633\u067e\u0631\u0633<\/strong> \u0648 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644<\/strong>: \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u062e\u062f\u0645\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc.<\/li>\n<li>\n<strong>\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644<\/strong>: \u0627\u0645\u06a9\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u062f\u0631 \u0627\u0646\u0648\u0627\u0639 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647<\/strong>: \u0628\u0647 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0622\u067e\u0644\u0648\u062f \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u062f\u0627\u062f\u0647 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%B5%D8%A8_%D9%88_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0646\u0635\u0628 \u0648 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0645\u0648\u0644\u062a\u0631\u060c \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 npm \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install <\/span>multer\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%85%D9%88%D9%84%D8%AA%D8%B1_%D8%A8%D8%A7_Express\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 Express<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Multer \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 Express \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645. \u0646\u062d\u0648\u0647 \u0634\u0631\u0648\u0639 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">multer<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">multer<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n\n<span class=\"c1\">\/\/ Configure Multer for basic usage<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span> <span class=\"na\">dest<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">uploads\/<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span> <span class=\"c1\">\/\/ Destination folder for uploaded files<\/span>\n\n<span class=\"c1\">\/\/ Single File Upload Route<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/upload<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">upload<\/span><span class=\"p\">.<\/span><span class=\"nf\">single<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">file<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">File uploaded successfully!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"mi\">3000<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Server running on port 3000<\/span><span class=\"dl\">'<\/span><span class=\"p\">));<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644:<\/p>\n<ul>\n<li>\n<code>upload.single('file')<\/code>: \u0627\u06cc\u0646 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0632\u0627\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0648\u0627\u062d\u062f \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u0628\u0627 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u06cc \u06a9\u0646\u062f <code>file<\/code>.<\/li>\n<li>\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0634\u062f\u0647 \u062f\u0631 <code>uploads\/<\/code> \u067e\u0648\u0634\u0647<\/li>\n<\/ul>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C_%D8%A8%D8%A7_%DA%AF%D8%B2%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0648\u0644\u062a\u0631 \u062f\u0648 \u06af\u0632\u06cc\u0646\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ol>\n<li>\n<strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<\/strong>: \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<\/strong>: \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0627\u0641\u0631 (\u0645\u0641\u06cc\u062f \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u062d\u0627\u0641\u0638\u0647) \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ol>\n<h4><span class=\"ez-toc-section\" id=\"1_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AF%DB%8C%D8%B3%DA%A9\"><\/span>\n<p>  1. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u06cc\u0633\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0628\u0631 \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0648 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0642\u0635\u062f \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">storage<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">multer<\/span><span class=\"p\">.<\/span><span class=\"nf\">diskStorage<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">destination<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">uploads\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span> <span class=\"c1\">\/\/ Folder location<\/span>\n  <span class=\"na\">filename<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">uniqueSuffix<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Date<\/span><span class=\"p\">.<\/span><span class=\"nf\">now<\/span><span class=\"p\">()<\/span> <span class=\"o\">+<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">-<\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">round<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1<\/span><span class=\"nx\">E9<\/span><span class=\"p\">);<\/span>\n    <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"nx\">uniqueSuffix<\/span> <span class=\"o\">+<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">-<\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">originalname<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span> <span class=\"na\">storage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">storage<\/span> <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<strong><code>destination<\/code><\/strong>: \u067e\u0648\u0634\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong><code>filename<\/code><\/strong>: \u0628\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0645\u0647\u0631 \u0632\u0645\u0627\u0646\u06cc \u0628\u0631\u0627\u06cc \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0628\u0648\u062f\u0646).<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"2_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%AD%D8%A7%D9%81%D8%B8%D9%87\"><\/span>\n<p>  2. \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062f\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062d\u0627\u0641\u0638\u0647\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0627\u0641\u0631 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0645\u062f\u062a \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0628\u062f\u0648\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u062f\u0631 \u062f\u06cc\u0633\u06a9 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span> <span class=\"na\">storage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">multer<\/span><span class=\"p\">.<\/span><span class=\"nf\">memoryStorage<\/span><span class=\"p\">()<\/span> <span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%81%D8%B6%D8%A7%DB%8C_%D8%B0%D8%AE%DB%8C%D8%B1%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A7%D8%A8%D8%B1%DB%8C_%D9%85%D9%88%D9%84%D8%AA%D8%B1_%D8%A8%D8%A7_AWS_S3\"><\/span>\n<p>  \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc: \u0645\u0648\u0644\u062a\u0631 \u0628\u0627 AWS S3<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f\u060c \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u06cc\u0645 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc (\u0645\u0627\u0646\u0646\u062f AWS S3) \u0627\u063a\u0644\u0628 \u062a\u0631\u062c\u06cc\u062d \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u062f\u063a\u0627\u0645 \u0628\u0627 S3\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>multer-s3<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install <\/span>aws-sdk multer-s3\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">aws<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">aws-sdk<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">multerS3<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">multer-s3<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n\n<span class=\"nx\">aws<\/span><span class=\"p\">.<\/span><span class=\"nx\">config<\/span><span class=\"p\">.<\/span><span class=\"nf\">update<\/span><span class=\"p\">({<\/span> <span class=\"na\">region<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">your-region<\/span><span class=\"dl\">'<\/span> <span class=\"p\">});<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">s3<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">aws<\/span><span class=\"p\">.<\/span><span class=\"nc\">S3<\/span><span class=\"p\">();<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">storage<\/span><span class=\"p\">:<\/span> <span class=\"nf\">multerS3<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">s3<\/span><span class=\"p\">:<\/span> <span class=\"nx\">s3<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">bucket<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">your-s3-bucket-name<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">metadata<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">fieldName<\/span><span class=\"p\">:<\/span> <span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">fieldname<\/span> <span class=\"p\">}),<\/span>\n    <span class=\"na\">key<\/span><span class=\"p\">:<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"nb\">Date<\/span><span class=\"p\">.<\/span><span class=\"nf\">now<\/span><span class=\"p\">().<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span> <span class=\"o\">+<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">-<\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">originalname<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">})<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 \u0633\u0637\u0644 S3 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0622\u067e\u0644\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0631\u0627 \u062f\u0648\u0631 \u0645\u06cc\u200c\u0632\u0646\u062f.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D9%81%DB%8C%D9%84%D8%AA%D8%B1_%DA%A9%D8%B1%D8%AF%D9%86_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7_%D8%A8%D8%B1_%D8%A7%D8%B3%D8%A7%D8%B3_%D9%86%D9%88%D8%B9\"><\/span>\n<p>  \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0642\u0637 \u0641\u0631\u0645\u062a\u200c\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u062e\u0627\u0635 (\u0645\u062b\u0644\u0627\u064b \u062a\u0635\u0627\u0648\u06cc\u0631) \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u06cc\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>fileFilter<\/code> \u06af\u0632\u06cc\u0646\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">fileFilter<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">file<\/span><span class=\"p\">,<\/span> <span class=\"nx\">cb<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Accept only image files<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"nx\">mimetype<\/span><span class=\"p\">.<\/span><span class=\"nf\">startsWith<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">image\/<\/span><span class=\"dl\">'<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"kc\">true<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Accept file<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nf\">cb<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"nc\">Error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Only image files are allowed!<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span> <span class=\"kc\">false<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Reject file<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">storage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">storage<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">fileFilter<\/span><span class=\"p\">:<\/span> <span class=\"nx\">fileFilter<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87_%D9%81%D8%A7%DB%8C%D9%84\"><\/span>\n<p>  \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u062d\u062c\u06cc\u0645\u060c a \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f <code>limits<\/code> \u06af\u0632\u06cc\u0646\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0627\u06cc\u0644 \u0628\u0647 1 \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">upload<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">storage<\/span><span class=\"p\">:<\/span> <span class=\"nx\">storage<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">limits<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">fileSize<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1024<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1024<\/span> <span class=\"p\">}<\/span> <span class=\"c1\">\/\/ 1 MB limit<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%A8%D8%A7%D8%B1%DA%AF%D8%B0%D8%A7%D8%B1%DB%8C_%DA%86%D9%86%D8%AF%DB%8C%D9%86_%D9%81%D8%A7%DB%8C%D9%84\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0648\u0644\u062a\u0631 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0686\u0646\u062f \u0641\u0627\u06cc\u0644 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ For multiple files with the same field name<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/uploadMultiple<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">upload<\/span><span class=\"p\">.<\/span><span class=\"nf\">array<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">files<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span><span class=\"p\">),<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Files uploaded successfully!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"c1\">\/\/ For multiple fields with different field names<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">uploadMultiple<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">multer<\/span><span class=\"p\">().<\/span><span class=\"nf\">fields<\/span><span class=\"p\">([<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">file1<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">maxCount<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">file2<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">maxCount<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span> <span class=\"p\">}<\/span>\n<span class=\"p\">]);<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/uploadMultipleFields<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">uploadMultiple<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Multiple files uploaded successfully!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<code>upload.array('files', 5)<\/code>: \u0627\u0645\u06a9\u0627\u0646 \u0622\u067e\u0644\u0648\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 5 \u0641\u0627\u06cc\u0644 \u062f\u0631 \u06cc\u06a9 \u0642\u0633\u0645\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<code>upload.fields<\/code>: \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0627 \u0646\u0627\u0645 \u0647\u0627\u06cc \u0641\u06cc\u0644\u062f \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AE%D8%B7%D8%A7_%D8%AF%D8%B1_%D9%85%D9%88%D9%84%D8%AA%D8%B1\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627 \u062f\u0631 \u0645\u0648\u0644\u062a\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u062d\u06cc\u062d \u062e\u0637\u0627 \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a. \u0645\u0648\u0644\u062a\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0646\u0648\u0639 \u062e\u0637\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/upload<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">upload<\/span><span class=\"p\">.<\/span><span class=\"nf\">single<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">file<\/span><span class=\"dl\">'<\/span><span class=\"p\">)(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nx\">multer<\/span><span class=\"p\">.<\/span><span class=\"nx\">MulterError<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ Multer-specific error<\/span>\n      <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Multer error: <\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">err<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"c1\">\/\/ General error<\/span>\n      <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error: <\/span><span class=\"dl\">'<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">err<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">File uploaded successfully!<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">});<\/span>\n<span class=\"p\">});<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%88%D8%A7%D8%B1%D8%AF_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%AF%D8%B1_%D8%AF%D9%86%DB%8C%D8%A7%DB%8C_%D9%88%D8%A7%D9%82%D8%B9%DB%8C\"><\/span>\n<p>  \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0648\u0644\u062a\u0631 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\n<strong>\u0622\u067e\u0644\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647<\/strong>: \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647 \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0646\u062f\u060c \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u062f\u0631 S3 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f \u0648 \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0633\u0646\u0627\u062f<\/strong>: \u0627\u0633\u0646\u0627\u062f \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0631\u0628\u0631 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0631\u0632\u0648\u0645\u0647\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc PDF) \u0631\u0627 \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0648 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u06cc\u0644\u062a\u0631 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0631\u0633\u0627\u0646\u0647 \u0627\u06cc \u062f\u0631 \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9<\/strong>: \u0641\u0631\u0648\u0634\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0642\u0627\u062f\u0631 \u0645\u06cc \u0633\u0627\u0632\u062f \u062a\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0646\u062f\u060c \u0646\u0648\u0639 \u0641\u0627\u06cc\u0644 \u0648 \u0627\u0646\u062f\u0627\u0632\u0647 \u0622\u0646 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0627\u0628\u0631\u06cc \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u0633\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f.<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0648\u0644\u062a\u0631 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0648 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0622\u067e\u0644\u0648\u062f \u0645\u062e\u062a\u0644\u0641\u060c \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc Node.js \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0648\u0686\u06a9 \u06cc\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u0633\u0637\u062d \u062a\u0648\u0644\u06cc\u062f \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644 \u0628\u0627\u0634\u06cc\u062f\u060c \u0645\u0648\u0644\u062a\u0631 \u0634\u0645\u0627 \u0631\u0627 \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p><strong>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9!<\/strong> \ud83d\ude80<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u062f\u0646\u06cc\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0648\u0628\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u067e\u0644\u0648\u062f \u0641\u0627\u06cc\u0644 \u06cc\u06a9 \u0646\u06cc\u0627\u0632 \u0631\u0627\u06cc\u062c \u0627\u0633\u062a. \u0686\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0646\u0645\u0627\u06cc\u0647\u060c \u0627\u0633\u0646\u0627\u062f \u06cc\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631\u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0622\u067e\u0644\u0648\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u062f\u0627\u0631\u0646\u062f. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js \u0628\u0627 Express\u060c \u06a9\u0641\u0627\u0644 \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc &hellip;<\/p>\n","protected":false},"author":2,"featured_media":82871,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-82870","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=82870"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/82870\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/82871"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=82870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=82870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=82870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}