使用 Node JS 上传文件或图像到服务器





5.00/5 (5投票s)
在本篇文章中,我们将了解如何使用 Node.js 将文件或图片上传到服务器。在这里,我们将使用 Visual Studio 进行开发,并使用以下 NPM 包来简化开发。express multer body-parser 我们将简要解释这些包的用途。
在本篇文章中,我们将了解如何使用 Node.js 将文件或图片上传到服务器。在这里,我们将使用 Visual Studio 进行开发,并使用以下 NPM 包来简化开发。
- express
- multer
- body-parser
我们将简要解释这些包的用途。正如大家所知,Node.js 是一个基于 Chrome V8 JavaScript 引擎构建的运行时环境,用于服务器端和网络应用程序。它是一个开源的,支持跨平台。Node.js 应用程序是用纯 JavaScript 编写的。如果您是 Node.js 新手,我强烈建议您阅读我之前关于 Node.js 的文章,链接在此处:此处。
下载源代码
背景
几年前,如果您需要将任何文件或图片上传到服务器,您完全依赖于服务器端语言,如 C# 和 PHP。自从 Node.js 革命以来,一切都改变了。在这里,我将向您展示如何使用 Node.js 将文件上传到服务器,而无需编写一行服务器端代码。我希望您会喜欢这个。
创建一个空白的 Node.js Web 应用程序
创建一个空白的 Node.js Web 应用程序。
在 package.json 中设置依赖项
要开始,我们首先设置依赖项。为此,请打开您的 package.json 文件并粘贴上面的代码。
{ "name": "node_js_file_upload", "version": "0.0.1", "description": "Node_JS_File_Upload", "main": "server.js", "dependencies": { "body-parser": "^1.15.2", "express": "^4.14.0", "multer": "^1.2.0" }, "author": { "name": "Sibeesh" } }
现在,运行 NPM 安装命令,如下所示。
npm install
运行命令后,您可以看到依赖项已安装在解决方案中。
现在我们可以理解这些依赖项的用途了。
- express
根据 Express 团队的说法,Express 是一个简洁而灵活的 Node.js Web 应用程序框架,为 Web 和移动应用程序提供了强大的功能集。Express 提供了一个基础 Web 应用程序功能的精简层,同时不隐藏您所熟悉和喜爱的 Node.js 功能。您可以通过 此处 了解更多关于 Express 包的信息。
- multer
Multer 是一个用于处理 multipart/form-data 的 Node.js 中间件,主要用于上传文件。它建立在 busboy 之上,以实现最高效率。请通过 此处 阅读更多关于 multer 包的信息。
开始使用我们的依赖项
您可以按如下方式创建依赖项的实例。
var Express = require('express'); var multer = require('multer'); var bodyParser = require('body-parser'); var app = Express(); app.use(bodyParser.json());
然后,是时候创建一个存储了,它指定了文件/图片应该保存在哪里以及如何保存。
var Storage = multer.diskStorage({ destination: function (req, file, callback) { callback(null, "./Images"); }, filename: function (req, file, callback) { callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); } });
每个文件包含以下信息
fieldname : 表单中指定的字段名
originalname : 用户计算机上的文件名
encoding : 文件的编码类型
mimetype : 文件的 MIME 类型
size : 文件大小(以字节为单位)
destination : 文件已保存到的文件夹
filename : 目标文件夹内的文件名
path : 上传文件的完整路径
buffer : 整个文件的缓冲区
现在,请按如下方式创建 multer 对象。
var upload = multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count
这里 multer 将我们在上一步中创建的存储作为参数。该函数
array(fieldname[, maxCount])
接受一个文件数组,所有文件都具有 fieldname 名称。
现在是时候编写我们的 post 和 get 操作了。
app.get("/", function (req, res) { res.sendFile(__dirname + "/index.html"); }); app.post("/api/Upload", function (req, res) { upload(req, res, function (err) { if (err) { return res.end("Something went wrong!"); } return res.end("File uploaded sucessfully!."); }); });
这里 /api/Upload 是我们将在稍后创建的 HTML 页面中设置的 action 名称。最后但同样重要的是,我们需要确保应用程序正在监听我们指定的端口,在本例中是端口 2000。
app.listen(2000, function (a) { console.log("Listening to port 2000"); });
创建 HTML 页面并设置上传
您可以按如下方式创建页面,并引用 jquery-3.1.1.min.js 和 jquery.form.min.js。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>Upload images to server using Node JS</title> <script src="Scripts/jquery-3.1.1.min.js"></script> <script src="Scripts/jquery.form.min.js"></script> </head> <body> <form id="frmUploader" enctype="multipart/form-data" action="api/Upload/" method="post"> <input type="file" name="imgUploader" multiple /> <input type="submit" name="submit" id="btnSubmit" value="Upload" /> </form> </body> </html>
请注意,您的表单的 enctype 必须是 multipart/form-data,并且 action 必须与我们在 API 中设置的相同。
创建 Ajax 提交事件
现在是时候创建我们的 ajax 事件了,我们将在这里调用我们的 API。
<script> $(document).ready(function () { var options = { beforeSubmit: showRequest, // pre-submit callback success: showResponse // post-submit callback }; // bind to the form's submit event $('#frmUploader').submit(function () { $(this).ajaxSubmit(options); // always return false to prevent standard browser submit and page navigation return false; }); }); // pre-submit callback function showRequest(formData, jqForm, options) { alert('Uploading is starting.'); return true; } // post-submit callback function showResponse(responseText, statusText, xhr, $form) { alert('status: ' + statusText + '\n\nresponseText: \n' + responseText ); } </script>
ajaxSubmit 函数是 jquery.form.min.js 插件的一部分,所以请确保您已包含它。
运行您的应用程序
现在请运行您的应用程序。在运行应用程序之前,您可以始终将脚本文件设置为启动文件。要设置它,请右键单击您的项目并单击属性。
现在您可以打开命令提示符,可以在命令提示符中手动定位您的项目,或者使用“在此处打开命令提示符”选项。要选择,请右键单击您的项目并选择如下选项。
现在在您的命令提示符中输入 node server.js,这将确保您的服务器正在运行。如果一切正常,您将看到如下窗口。
由于我们的服务器已准备就绪,现在可以运行我们的网页了。请转到您的浏览器并输入 URL https://:2000。使用我们创建的文件上传器选择一些文件。
如果您点击提交,您将看到我们正在调用我们的方法 action,文件已上传。
您可以随时下载附加的源代码以查看完整的代码和应用程序。祝您编码愉快!。
另请参阅
结论
我是否遗漏了您认为可能需要的内容?您是否认为这篇文章有用?我希望您喜欢这篇文章。请与我分享您宝贵的建议和反馈。
轮到你了。你怎么看?
没有评论的博客不是博客,但请尽量保持在主题内。如果您有与本帖无关的问题,最好将其发布在 C# Corner、Code Project、Stack Overflow、Asp.Net Forum 上,而不是在此处评论。在 Twitter 上分享或通过电子邮件向我发送您问题的链接,如果我可以,我一定会尽力提供帮助。
诚挚地
Sibeesh Venu