当前位置: 首页 > 科技观察

使用NodeJS将文件或图像上传到服务器

时间:2023-03-14 21:19:18 科技观察

在这篇文章中,我们将看到如何使用NodeJS将文件或图像上传到服务器。在这里,我们将在开发过程中使用带有以下NPM包的VisualStudio。expressmulterbody-parser我们将简要说明这些包的使用。众所周知,NodeJS是一个基于ChromeV8JavaScript引擎的运行环境,用于服务器端和Web应用程序。而且是开源的,支持跨平台。NodeJS应用程序是用纯JavaScript编写的。如果您是NodeJS的新手,那么我强烈建议您阅读我之前关于NodeJS的文章。下载源代码使用NodeJS后台上传文件或图片到服务器几年前,如果你需要将任何文件或图片上传到服务器,你必须完全依赖服务器端语言,如C#和PHP。JS革命之后,一切都变了。今天我将向您展示如何使用NodeJS将文件上传到服务器,而无需编写任何服务器端代码。希望你会喜欢。创建一个空白的NodeJSWeb应用程序在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安装命令如图所示。运行npminstall命令后,可以看到解决方案中已经安装了依赖。现在我们可以理解这些依赖关系是干什么用的了。express根据Express团队的说法,Express是一个最小且灵活的Node.jsWeb应用程序框架,它为Web和移动应用程序提供了一组强大的功能。Express提供了一层薄薄的基本Web应用程序功能,而不会掩盖您熟悉和喜爱的Node.js功能。您可以随时在此处了解有关快递包裹的更多信息。multerMulter是一个处理multipart/form-data的node.js中间件,主要用于上传文件。它建立在busboy的基础上以提高效率。单击此处阅读有关multer包的更多信息。依赖项入门您可以按如下方式创建依赖项实例。varExpress=require('express');varmulter=require('multer');varbodyParser=require('body-parser');varapp=Express();app.use(bodyParser.json());然后,创建描述文件/图像应保存在何处以及如何保存的存储。varStorage=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:文件的大小inbytesdestination:保存文件的文件夹filename:目标文件的名称path:上传文件的完整路径buffer:现在整个文件的Buffer请按如下方式创建multer对象。varupload=multer({storage:Storage}).array("imgUploader",3);//这里的字段名和最大计数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){returnres.end("出错了!");}returnres.end("文件上传成功!.");});});其中/api/Upload是我们将在稍后创建的HTML页面上设置的操作的名称。***,但同样重要的是,我们需要确保应用程序正在侦听我们的特定端口,在本例中为端口2000。app.listen(2000,function(a){console.log("Listeningtoport2000");});创建HTML页面并设置上传您可以使用jquery-3.1.1.min.js和jquery.form.min.js参考创建如下所示的页面。使用NodeJS上传图片到服务器</标题></head>body><formid="frmUploader"enctype="multipart/form-data"action="api/Upload/"method="post"><inputtype="file"name="imgUploader"multiple/><输入类型="submit"name="submit"id="btnSubmit"value="Upload"/></form></body></html>请注意,表单使用的ecctype必须是multipart/form-data,该操作必须与我们在API中设置的相同。创建Ajax提交事件现在创建我们将调用API的ajax事件。ajaxSubmit函数是插件jquery.form.min.js的一部分,因此请确保包含它。运行应用程序现在请运行您的应用程序。在运行应用程序之前,您始终可以通过右键单击项目并单击“属性”将脚本文件设置为启动文件。现在您可以打开命令提示符,您可以在命令提示符处手动定位项目或使用“在此处打开命令提示符”选项。要选择,请右键单击您的项目并选择下面的选项。现在在命令提示符中键入nodeserver.js,这将确保您的服务器正在运行。如果一切正常,您可以看到以下窗口。现在我们可以运行我们的网页,因为服务器已准备就绪,请转到您的浏览器并输入URLhttp://localhost:2000。使用我们创建的文件上传器选择一些文件。如果您点击提交,您可以看到我们正在调用我们的方法操作并且文件已上传。您可以随时下载随附的源代码以查看完整的代码和应用程??序。编码愉快!结论我不知道我是否遗漏了什么?你觉得这篇文章有用吗?希望你喜欢这篇文章。欢迎您提出宝贵的建议和反馈。翻译链接:http://www.codeceo.com/article/nodejs-upload-file-to-server.html英文原文:UploadFilesOrImagesToServerUsingNodeJS译文作者:码农-小风</p> </div> </div> <div class="zuowen_sxy"> <div class="prev">上一篇:<a title="在Kubernetes上实现无服务器化的五种方式_0" href="/kejiguancha/92570.html">在Kubernetes上实现无服务器化的五种方式_0</a> </div> <div class="prev">下一篇:<a title="“比特币四问”之一:监管为何接二连三?投机风险有多大?" href="/kejiguancha/92572.html">“比特币四问”之一:监管为何接二连三?投机风险有多大?</a> </div> </div> <div class="related_about"> <div class="related_about_t"><code>使用NodeJS将文件或图像上传到服务器相关文章</code></div> <ul> <li><a href="/kejifunen/370970.html" target="_blank" title="可穿戴设备或将成为液晶面板主流应用">可穿戴设备或将成为液晶面板主流应用</a></li> <li><a href="/kejifunen/370964.html" target="_blank" title="Apple Watch 第四季度销量或将达到 600 万部">Apple Watch 第四季度销量或将达到 600 万部</a></li> <li><a href="/kejifunen/370946.html" target="_blank" title="VR商业化元年即将到来,国内的生态系统准备得怎么样了? ">VR商业化元年即将到来,国内的生态系统准备得怎么样了? </a></li> <li><a href="/kejifunen/370930.html" target="_blank" title="革命性破坏?传闻出门问问新品将解决智能手表续航痛点">革命性破坏?传闻出门问问新品将解决智能手表续航痛点</a></li> <li><a href="/kejifunen/370924.html" target="_blank" title="Oculus Rift 售价 599 美元,将于 3 月发售">Oculus Rift 售价 599 美元,将于 3 月发售</a></li> <li><a href="/kejifunen/370906.html" target="_blank" title="独家专访Oculus VR创始人!虚拟现实将在哪里爆发? ">独家专访Oculus VR创始人!虚拟现实将在哪里爆发? </a></li> <li><a href="/kejifunen/370904.html" target="_blank" title="使用 HTC Vive 时必须了解的几个问题,近视眼还能玩吗">使用 HTC Vive 时必须了解的几个问题,近视眼还能玩吗</a></li> <li><a href="/kejifunen/370899.html" target="_blank" title="亚马逊将推出即插即用智能音箱增强型低音炮Amazon Ech">亚马逊将推出即插即用智能音箱增强型低音炮Amazon Ech</a></li> <li><a href="/kejifunen/370892.html" target="_blank" title="电磁炉这样使用的话,还能再用五年! ">电磁炉这样使用的话,还能再用五年! </a></li> <li><a href="/kejifunen/370891.html" target="_blank" title="倒计时1天! OPPO官宣R17即将开售">倒计时1天! OPPO官宣R17即将开售</a></li> <li><a href="/kejifunen/370879.html" target="_blank" title="行业∣比特大陆推出安全AI芯片,安全行业将面临超维度对手">行业∣比特大陆推出安全AI芯片,安全行业将面临超维度对手</a></li> <li><a href="/kejifunen/370859.html" target="_blank" title="智能娱乐硬件+泛娱乐将引领国内VR-AR产业走向何方? ">智能娱乐硬件+泛娱乐将引领国内VR-AR产业走向何方? </a></li> <li><a href="/kejifunen/370835.html" target="_blank" title="谷歌隐形眼镜即将量产商业化">谷歌隐形眼镜即将量产商业化</a></li> <li><a href="/kejifunen/370831.html" target="_blank" title="谷歌能否将其 VR 耳机的价格下调一半至 49 美元以重振市">谷歌能否将其 VR 耳机的价格下调一半至 49 美元以重振市</a></li> <li><a href="/kejifunen/370822.html" target="_blank" title="智能手表或将通过物联网“回归”市场">智能手表或将通过物联网“回归”市场</a></li> <li><a href="/kejifunen/370818.html" target="_blank" title="华为P20的新配色或将引领秋冬潮流,成为时尚圈新宠">华为P20的新配色或将引领秋冬潮流,成为时尚圈新宠</a></li> <li><a href="/kejifunen/370810.html" target="_blank" title="2014年,智能可穿戴设备将占领世界">2014年,智能可穿戴设备将占领世界</a></li> <li><a href="/kejifunen/370808.html" target="_blank" title="可以比医生更好地预测死亡,人工智能将如何改善临终关怀">可以比医生更好地预测死亡,人工智能将如何改善临终关怀</a></li> <li><a href="/kejifunen/370801.html" target="_blank" title="雷鸟科技发布全球OTT白皮书! 2020年全球OTT视频内容">雷鸟科技发布全球OTT白皮书! 2020年全球OTT视频内容</a></li> <li><a href="/kejifunen/370777.html" target="_blank" title="预测! 2016年手机+可穿戴设备将引发怎样的化学反应? ">预测! 2016年手机+可穿戴设备将引发怎样的化学反应? </a></li> </ul> </div> </div> <div class="main-right"> <div class="right_fix"> <div class="r_con"> <div class="r_title">最新推荐</div> <ul> <li><em>1</em><a href="/kejifunen/371269.html" title="Cool House“全球智能加速器”沙龙将于8月10日在深" target="_blank">Cool House“全球智能加速器”沙龙将于8月10日在深</a></li> <li><em>2</em><a href="/kejifunen/371268.html" title="石墨烯可以将普通纸张变成用于柔性显示器和可穿戴设备的新材料" target="_blank">石墨烯可以将普通纸张变成用于柔性显示器和可穿戴设备的新材料</a></li> <li><em>3</em><a href="/kejifunen/371234.html" title="三星 Gear VR 将实现手部追踪 " target="_blank">三星 Gear VR 将实现手部追踪 </a></li> <li><em>4</em><a href="/kejifunen/371232.html" title="Apple Watch 外置电池发布 让使用时间翻倍" target="_blank">Apple Watch 外置电池发布 让使用时间翻倍</a></li> <li><em>5</em><a href="/kejifunen/371230.html" title="LV高管!瑞士奢侈手表行业将受益于智能手表的繁荣" target="_blank">LV高管!瑞士奢侈手表行业将受益于智能手表的繁荣</a></li> <li><em>6</em><a href="/kejifunen/371223.html" title="VR行业发展分析!告别“野蛮生长”,将进入洗牌期" target="_blank">VR行业发展分析!告别“野蛮生长”,将进入洗牌期</a></li> <li><em>7</em><a href="/kejifunen/371213.html" title="VR设备数量或将在5年内超越智能手机 " target="_blank">VR设备数量或将在5年内超越智能手机 </a></li> <li><em>8</em><a href="/kejifunen/371207.html" title="小米手环3来了!华米皇王!今年发布会即将发布" target="_blank">小米手环3来了!华米皇王!今年发布会即将发布</a></li> <li><em>9</em><a href="/kejifunen/371203.html" title="魅族官方微博提示!魅族悬浮音箱Gravity即将在中国上市" target="_blank">魅族官方微博提示!魅族悬浮音箱Gravity即将在中国上市</a></li> <li><em>10</em><a href="/kejifunen/371198.html" title="助力智慧生活,Formate新品T68即将在天猫、京东开售" target="_blank">助力智慧生活,Formate新品T68即将在天猫、京东开售</a></li> </ul> </div> <div class="r_con"> <div class="r_title">猜你喜欢</div> <ul class="you_like"> <li><em>1</em><a href="/kejifunen/371190.html" title="小米手环3NFC版即将推出!公交、地铁即刻刷起" target="_blank">小米手环3NFC版即将推出!公交、地铁即刻刷起</a></li> <li><em>2</em><a href="/kejifunen/371184.html" title="荣耀首款智能手表S1今日发布 谜底即将揭晓" target="_blank">荣耀首款智能手表S1今日发布 谜底即将揭晓</a></li> <li><em>3</em><a href="/kejifunen/371169.html" title="预测! VR行业将迎来五年来首轮行业机遇" target="_blank">预测! VR行业将迎来五年来首轮行业机遇</a></li> <li><em>4</em><a href="/kejifunen/371166.html" title="iPhone 7 将于 9 月 7 日发布,Apple Wa" target="_blank">iPhone 7 将于 9 月 7 日发布,Apple Wa</a></li> <li><em>5</em><a href="/kejifunen/371164.html" title="神秘配置引发热议360新手机产品或将搭载新端口" target="_blank">神秘配置引发热议360新手机产品或将搭载新端口</a></li> <li><em>6</em><a href="/kejifunen/371163.html" title="奥克斯实行“使用60天不满意包退”的四大理由" target="_blank">奥克斯实行“使用60天不满意包退”的四大理由</a></li> <li><em>7</em><a href="/kejifunen/371150.html" title="国家发改委宣布家电将迎来新增长" target="_blank">国家发改委宣布家电将迎来新增长</a></li> <li><em>8</em><a href="/kejifunen/371125.html" title="PS5和PS5二代VR预计将于2020年发布" target="_blank">PS5和PS5二代VR预计将于2020年发布</a></li> <li><em>9</em><a href="/kejifunen/371121.html" title="苹果的祝福! JDI将全力进击智能手表市场" target="_blank">苹果的祝福! JDI将全力进击智能手表市场</a></li> <li><em>10</em><a href="/kejifunen/371098.html" title="可穿戴设备市场将在“大规模灭绝”后重生" target="_blank">可穿戴设备市场将在“大规模灭绝”后重生</a></li> <li><em>11</em><a href="/kejifunen/371075.html" title="可穿戴医疗设备的普及将扩大对稀有金属的需求" target="_blank">可穿戴医疗设备的普及将扩大对稀有金属的需求</a></li> <li><em>12</em><a href="/kejifunen/371066.html" title="传闻苹果iWatch将配备LG的OLED显示屏" target="_blank">传闻苹果iWatch将配备LG的OLED显示屏</a></li> <li><em>13</em><a href="/kejifunen/371056.html" title="高通新款智能手表芯片将于9月10日发布" target="_blank">高通新款智能手表芯片将于9月10日发布</a></li> <li><em>14</em><a href="/kejifunen/371040.html" title="东南大学联合联想研发“可穿戴智能心电衣”,年底前将投入公测" target="_blank">东南大学联合联想研发“可穿戴智能心电衣”,年底前将投入公测</a></li> <li><em>15</em><a href="/kejifunen/371034.html" title="苹果有意削弱iPhone!可穿戴设备将取代它" target="_blank">苹果有意削弱iPhone!可穿戴设备将取代它</a></li> <li><em>16</em><a href="/kejifunen/371018.html" title="“狼”来了! 9月智能手表市场或将发生质变" target="_blank">“狼”来了! 9月智能手表市场或将发生质变</a></li> <li><em>17</em><a href="/kejifunen/371016.html" title="2020年VR市场将突破千亿工信部推动行业标准出台" target="_blank">2020年VR市场将突破千亿工信部推动行业标准出台</a></li> <li><em>18</em><a href="/kejifunen/371010.html" title="Jibo即将来到中国,这次是会说中文的可爱小神" target="_blank">Jibo即将来到中国,这次是会说中文的可爱小神</a></li> <li><em>19</em><a href="/kejifunen/371000.html" title="2017年,30%的可穿戴产品将“隐形”" target="_blank">2017年,30%的可穿戴产品将“隐形”</a></li> <li><em>20</em><a href="/kejifunen/370993.html" title="去年,VR市场仍然以硬件为主,未来AR将超越VR" target="_blank">去年,VR市场仍然以硬件为主,未来AR将超越VR</a></li> </ul> </div> </div> </div> </div> <div class="related_article"></div> <div class="footer"> <p>Copyright © 2012-2022 程序源 版权所有<a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">豫ICP备2022028201号</a></p> <p>重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。 如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。</p> </div> <!-- 应用插件标签 start --> <!-- 应用插件标签 end --> </body> </html>