返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么用nodejs搭建一个图片上传网站
  • 283
分享到

怎么用nodejs搭建一个图片上传网站

2024-04-02 19:04:59 283人浏览 八月长安
摘要

这篇文章主要讲解了“怎么用nodejs搭建一个图片上传网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用nodejs搭建一个图片上传网站”吧!效果如图

这篇文章主要讲解了“怎么用nodejs搭建一个图片上传网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用nodejs搭建一个图片上传网站”吧!

效果如图:

怎么用nodejs搭建一个图片上传网站

点击上传后,会把文件放到后台一个uploads文件夹下面,如果上传成功,那么页面会  弹出一个上传成功的提示框,如果上传失败,会弹出一个失败的提示框,如果网速比较慢,会显示出上传过程中的进度条。

开发准备

用普通的表单提交方法实现文件上传。

1.编写前端代码

<fORM action="uploadimg" method="POST" enctype="multipart/form-data">         <input type="file" name="imgfile" multiple>         <input type="submit" value="提交">     </form>
  • 设置action为提交地址, enctype="multipart/form-data"

  • 设置提交文件表单域名为 imgfile

2.编写后端测试用代码

  • 这里我们采用了express框架,需要先安装这个框架,然后使用静态中间件指定放置我们js CSS html 文件的目录

var app = express(); app.use(express.static('dist'))

下载处理上传文件的插件 multer

  • 在readme.md文件中有基本的使用方法,我们复制过来代码实例稍微改改就可以使用了。把文件上传路径指定到uploads,然后用当前日期和文件名命名上传过来的文件。这个imgfile域名必须严格和前端表单文件域名对应起来。

完整代码如下:

"use strict"; exports.__esModule = true; var express = require("express"); var multer = require("multer"); var storage = multer.diskStorage({     destination: function(req, file, cb) {         cb(null, './uploads');     },     filename: function(req, file, cb) {         cb(null, `${Date.now()}-${file.originalname}`)     } }) var upload = multer({ storage: storage }); var app = express(); app.use(express.static('dist')); //var cpUpload = upload.fields([{ name: 'imgfile', maxCount: 12 }]) app.post('/uploadimg', upload.array('imgfile', 40), function(req, res, next) {     var files = req.files     console.log(files)     if (!files[0]) {         res.send('error');     } else {         res.send('success');     }        console.log(files); })  var server = app.listen(9999, 'localhost', function() {     console.log('server is running at port 9999...'); });

这样选择文件,点击提交按钮后文件就被上传到了服务器uploads文件夹下

用H5和ajax技术实现无刷新文件上传

1.改造原来的选择文件按钮,让它变成一个可爱的小图标,点击后选择文件。

这个过于简单就不放代码了,具体思路是把一个a标签放上背景图片,把上传文件 input type="file"  大小设置成a标签一样大,并且放置到a标签上面,opacity设置成0透明的。点击a实际上是点击了 input type="file"

2.选取文件后生成缩略图,这个基本思路是监听 input type="file"  的onchange事件,如果选了文件就利用FileReader生成一个图片data:url添加到div.preview里面动态生成的img上,给div.preview设置成flex布局就可以灵活放置预览图了。

html

<div class="wrap">          <a href="" class="selectImg" title="上传图片"></a>         <input type="file" multiple id="file">         <input type="button" value="上传" id="upload">         <div class="preview"></div>         <div class="progress">             <progress max="100" value="1" item-width="100" id="progress"></progress>         </div>     </div>

js

fileinput.onchange = () => {             //console.log('DDDd')             var files = fileinput.files             let imgDOMArray = new Array(files.length)             let reader = []             let thumbPic = []             progressDOM = document.getElementById('progress-img')             for (let i = 0; i < files.length; i++) {                 reader[i] = new FileReader()                 thumbPic[i] = document.createElement('div')                 imgDOMArray[i] = document.createElement('img')                 imgDOMArray[i].file = files[i]                 thumbPic[i].className = 'thumbPic'                 thumbPic[i].appendChild(imgDOMArray[i])                 previewDOM.appendChild(thumbPic[i])                 reader[i].readAsDataURL(files[i])                 reader[i].onload = (img => {                      return e =>img.src = e.target.result                                      })(imgDOMArray[i])              }         }

3.点击上传按钮上传图片

这个基本思路就是利用Formdata模拟表单,然后用ajax发送文件到服务器

var aUpload = document.querySelector('.selectImg')         var button = document.querySelector('#upload')         var fileinput = document.getElementById('file')         button.onclick = uploadFile          function uploadFile() {             //  console.log('ddd')             var xhr = new XMLHttpRequest()             var formdata = new FormData()              var files = fileinput.files             if (!files[0]) {                 alert('请先选择图片,再上传!')                 return             }              var progress = document.querySelector('progress')             for (let i = 0; i < files.length; i++) {                 formdata.append('imgfile', files[i], files[i].name)             }             xhr.open('POST', '/uploadimg')             xhr.onload = () => {                 if (xhr.status === 200 && xhr.responseText === 'success') {                     previewDOM.innerHTML = ''                     xhr = null                     alert('图片上传成功!')                 }             }             xhr.send(formdata)             xhr.upload.onprogress = e => {                 if (e.lengthComputable) {                     var progressWrap = document.querySelector('.progress')                     progressWrap.style.display = "flex"                     var percentComplete = e.loaded / e.total * 100                     progress.value = percentComplete                      if (percentComplete >= 100) {                         progress.value = 0                         progressWrap.style.display = "none"                     }                 }             }          }

其中利用了xhr.upload.onprogress监听数据上传事件,并且动态设置h6进度条的value显示上传进度。如果上传完成,隐藏进度条。

如果服务器返回的是success,就弹出上传图片成功。否则弹出上传图片失败。

感谢各位的阅读,以上就是“怎么用nodejs搭建一个图片上传网站”的内容了,经过本文的学习后,相信大家对怎么用nodejs搭建一个图片上传网站这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么用nodejs搭建一个图片上传网站

本文链接: https://lsjlt.com/news/86264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用nodejs搭建一个图片上传网站
    这篇文章主要讲解了“怎么用nodejs搭建一个图片上传网站”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用nodejs搭建一个图片上传网站”吧!效果如图...
    99+
    2024-04-02
  • 本地搭建网站怎么上传文件
    本地搭建网站时配置ftp服务器实现上传文件在Windows操作界面中,进入“控制板面”,打开“默认程序”应用;进入默认程序后,点击“程序和功能”,选择“打开或关闭Windows功能”;在弹出的“Windows功能”窗口中,勾选“FTP服务器...
    99+
    2024-04-02
  • 云服务器怎么搭建网站上传文件
    要搭建一个网站并上传文件,你可以按照以下步骤操作:1. 购买云服务器:选择一家云服务提供商,注册账号并购买一个适合你需求的云服务器实...
    99+
    2023-09-26
    云服务器
  • php怎么搭建一个简单的网站
    要搭建一个简单的网站,你可以按照以下步骤进行操作: 安装PHP:首先,在你的服务器或本地环境上安装PHP。你可以从PHP官方网站下...
    99+
    2024-04-09
    php
  • 怎么用Docker快速搭建一个博客网站
    小编给大家分享一下怎么用Docker快速搭建一个博客网站,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、准备工作本章教程基于Docker搭建,所以需要你提前在服务器上安装好Docker环境。Docker安装教程:http...
    99+
    2023-06-25
  • 云服务器上怎么搭建多个网站
    在云服务器上搭建多个网站可以通过以下步骤实现:1. 选择合适的云服务器:根据你的需求选择合适的云服务器,比如虚拟私有服务器(VPS)...
    99+
    2023-09-16
    云服务器
  • vue中怎么实现一个上传图片组件
    本篇文章给大家分享的是有关vue中怎么实现一个上传图片组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.首先得有一个[type=file]...
    99+
    2024-04-02
  • 怎么快速的搭建一个企业网站
    本篇文章给大家分享的是有关怎么快速的搭建一个企业网站,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、确定网站主题:网站主题就是定位你网站的主要内容,想建设好一个网站必须得确定...
    99+
    2023-06-07
  • github怎么搭建个人网站
    随着科技和互联网的发展,越来越多的人都离不开互联网的使用,而个人的网站已经成为了人们展现自己的重要途径之一。那么如何搭建一个个人网站呢?本文将介绍一个简单易懂的方法——使用github搭建个人网站。一、申请账号首先,需要在github官网上...
    99+
    2023-10-22
  • 怎么利用nodeJS+vue图片上传实现更新头像
    本篇内容主要讲解“怎么利用nodeJS+vue图片上传实现更新头像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用nodeJS+vue图片上传实现更新头像”吧!思路:前端通过el-uplo...
    99+
    2023-06-30
  • 利用Spring Boot怎么样实现一个图片上传功能
    利用Spring Boot怎么样实现一个图片上传功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体内容如下package com.clou.inteface.domain....
    99+
    2023-05-31
    springboot spring boo
  • 在Windows上怎么搭建PHP网站
    要在Windows上搭建一个PHP网站,你需要进行以下步骤: 安装PHP:下载并安装最新版本的PHP(https://www.ph...
    99+
    2023-10-22
    Windows PHP
  • 怎么建立一个网站
    建立一个网站的方法:1、购买域名;2、购买空间;3、实名认证;4、建站程序;5、网站内容;6、网站备案。其实建立一个自己的网站很简单,难是难在很多小伙伴不知道建立网站流程和所需要的东西,可能在一开始建立的时候有点陌生,等你亲自购买所需要的材...
    99+
    2023-07-10
  • 图片网站用什么程序建站好
    图片网站用WordPress程序建站好,WordPress是全球使用用户量最多的cms系统,有成百上千的主题和插件,功能齐全。同时有强大的社区支持,有上千万的开发者贡献和审查wordpress,因此wordpress是安全并且活跃的。...
    99+
    2024-04-02
  • 使用IIS服务器搭建一个网站
    1、什么是IIS IIS全称为Internet Information Services,是一种Web服务组件。通过在自己电脑上安装好IIS服务,就可以把你自己的电脑当作一个网站的服务器。 2、搭建一个IIS 2.1、开启wi...
    99+
    2023-09-16
    服务器 asp.net Powered by 金山文档
  • ubuntu中怎么搭建个人网站
    要在Ubuntu上搭建个人网站,您可以使用Apache、Nginx或其他web服务器软件,并安装PHP、MySQL等相关的软件。以下...
    99+
    2024-04-09
    ubuntu
  • HTML5中怎么实现一个图片压缩上传功能
    这篇文章给大家介绍HTML5中怎么实现一个图片压缩上传功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、创建一个图片和一个canvasXML/HTML Code复制内容到剪贴板va...
    99+
    2024-04-02
  • Android开发中怎么实现一个图片上传功能
    本篇文章给大家分享的是有关Android开发中怎么实现一个图片上传功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码实现:private void showDialog()...
    99+
    2023-05-31
    android roi
  • 怎么用python搭建网站
    要使用Python搭建网站,可以使用一个Python的Web框架,例如Django或Flask。下面是使用Flask框架搭建网站的基本步骤:1. 安装Flask:在终端或命令提示符中,输入以下命令安装Flask:```pip insta...
    99+
    2023-08-11
    python
  • Java怎么搭建一个个人网盘
    这篇文章将为大家详细讲解有关Java怎么搭建一个个人网盘,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作