基于express的文件上传功能实现

2023-11-02

基于express 的文件上传功能

功能描述

  • 可以上传文件,并在后台中看到上传的文件
  • 可以上传图片,并进行一个简单预览,点击提交后可以在后台中看到

功能展示

在这里插入图片描述

功能实现

  • index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>上传文件</title>
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <img id="img" src="" alt="" width="300px"><br>
        <input type="file" name="imgs" value="" id="file"><br>
        <input type="submit" value="上传文件"><br>
    </form>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>            
        $(function(){           
            $("#file").change(function(event){
                let file = event.target.files[0] || event.dataTransfer.files[0];        
                console.log(file);
                if(file){                  
                    let reader = new FileReader();
                    reader.onload = function(){                    
                        $("#img").attr("src",this.result);                                           
                    }
                    reader.readAsDataURL(file);               
                }
            });
        })
    </script>
</body>
</html>
  • upload.js
const express = require("express");
const app = new express();
const multer = require("multer");
const fs = require("fs");
app.use(express.json());
app.use(express.urlencoded({extended:false}));
//array中的名称要和表单中的名称一致
app.use(multer({dest:"/"}).array("imgs"));
app.get("/",(request,response)=>{
    response.sendFile(__dirname + "/index.html");
});
app.post("/upload",(request,response)=>{
    if(request.files.length !== 0){
        let sava_path = __dirname + "/images/" + request.files[0].originalname;
        console.log(sava_path);
        let file_body = fs.readFileSync(request.files[0].path);
        fs.writeFile(sava_path,file_body,(err,data)=>{
            if(err) response.send(err);
           let response_body = {
                msg : `${request.files[0].originalname} upload success` ,
            }
            response.json(response_body); 
        });
    }  
});
app.listen(80);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于express的文件上传功能实现 的相关文章

  • Jqplot 中两个系列数据的不同颜色条

    我想知道如何在 Jqplot 中为两个系列制作不同的颜色条 如果我只有一个系列数据 它的工作原理如下图所示 红色和绿色基于其值 但是 如果我有两个系列数据 我无法为每个系列数据配置两个系列颜色 目前我只能做这个图 我希望两个系列图可以根据其
  • JS如何获取多维数组的最大深度?

    我有一个多维数组 我想知道它的最大深度 我发现了这个灵魂 但它不适用于对象数组 const getArrayDepth arr gt return Array isArray arr 1 Math max arr map getArrayD
  • Object.assign() - 奇怪的行为需要解释

    我有这个代码 function margeOptions options passedOptions options Object assign options passedOptions let passedOpts a true let
  • 画布图像遮罩/重叠

    在我的项目中 我必须使用画布在另一个相同尺寸和图案图像上实现一个不同的颜色图像 并且图像不是圆形或矩形形状 所有这些都是波浪形状的 它将应用于单个主背景图像 以便在每个主背景图像上显示多个图形onclick功能 重叠的图像应更改为另一种选定
  • 将 FBX 文件转换为 .gltf 后,模型非常小,为什么?

    问题 将 FBX 文件转换为 gltf 后 模型非常小 为什么 我尝试用以下方法缩放模型frontObject scale set 1000 1000 1000 但我收到以下错误 TypeError Cannot read property
  • 过滤器返回 true 或 false

    我正在使用过滤器在 data it 返回对象中查找 id 它返回的对象不是 true 或 false 如果我怎样才能返回 true 或 falseval recoredId valueId var hasMatch data filter
  • TypeScript 中类和命名空间的区别

    到底有什么区别classes and namespaces在打字稿中 我知道 如果您创建一个带有静态方法的类 您可以在不实例化该类的情况下访问它们 这正是我猜想的命名空间的要点之一 我还知道你可以创建多个同名的命名空间 并且它们的方法在编译
  • 向下滚动时如何使图像移动?

    这是我想要实现的目标的示例 https www flambette com en https www flambette com en 我尝试过更改图像的 css 属性 但效果不能满足我的需求 我尝试过以下代码 mydocument on
  • nodejs gmail api不支持承诺

    Google 推荐使用承诺 https developers google com api client library javascript features promises 但它的代码示例没有 当我修改代码时 我正在努力使 gmail
  • Ember.js 数组作为模型的属性

    干杯 我有一些模型 它的一个属性是一个数组 但由于某些原因 我在服务器上使用 mongoDB 并且它是嵌入式模型和 ember data 的问题 我不能做这样的事情 App Foo DS Model extend numbers DS ha
  • 如何在 Jest 测试中模拟 StatusBarManager.getHeight?

    我正在使用 expo 34 并且反应本机用户界面库 https www npmjs com package react native ui lib来自 wix 并且在为我的组件设置笑话测试时遇到问题 问题看起来出现在link https g
  • jQuery UI 对话框使用 setTimeout 自动关闭

    我试图让对话框在打开后三秒自动关闭 我尝试过以下方法 setTimeout mydialog dialog close 3000 这是在上下文中 acknowledged dialog dialog height 140 modal tru
  • 拖放图像上传在服务器上不起作用

    我正在尝试实现拖放图像上传 我在网上找到了一个相当简单的脚本并适合我的使用 在我的本地安装中 文件上传得很好 但在服务器上却不行 从我的调试尝试来看 SERVER HTTP X FILENAME 甚至没有被 php 设置 我尝试了以下方法
  • EJS - 包含返回找不到包含文件“header.ejs”

    我尝试像这样用 ejs 渲染 html const ejs require ejs fs require fs str fs readFileSync dirname mail templates test ejs utf8 console
  • 如何防止在达到一定字符数后向文本区域输入内容?

    使用下面的代码 任何超过指定最大值的输入都将被删除 但这会产生一种效果 即键入字符后立即将其删除 我宁愿简单地阻止输入字符
  • 通过电子邮件发送在 HTML5 画布上创建的图像

    我有一个画布 用户可以通过交互来更改设计 现在 用户完成更改后 可以提交他的设计及其电子邮件 ID 但为了提交设计 我使用以下方法将画布转换为图像http www nihilogic dk labs canvas2image http ww
  • 检测 JavaScript 中的焦点丢失

    我希望能够检测 JavaScript 中任意元素何时失去焦点 因此我可以构建一个类似于 jEdit 的内联编辑工具 我不能依赖 jQuery 来实现这个库 所以我需要一个本机方法来完成它 我查看了 onblur 这似乎是正确的事情 但 MD
  • 使用 Passport-jwt 授权 jwt 令牌时获取 401 未经授权的状态

    成功登录后 我获得了 jwt 令牌 现在要访问受限 api 我正在发送授权标头 但我总是收到 401 未经授权 我已经提到过这个使用 Passport jwt 验证节点 API https stackoverflow com q 35528
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da

随机推荐

  • 不同tab页sessionStorage共享情况

    不同tab页sessionStorage共享情况 先看MDN的描述 页面会话在浏览器打开期间一直保持 并且重新加载或恢复页面仍会保持原来的页面会话 在新标签或窗口打开一个页面时会复制顶级浏览会话的上下文作为新会话的上下文 这点和 sessi
  • idea自定义 postfix completion提高编码效率

    postfix completion的使用 详情见 https www cnblogs com expiator p 17380495 html 自定义 postfix completion List String 初始化list key
  • 非关系型数据库Mongodb入门

    MongoDB是一个高性能 可扩展 易操作的非关系型数据库 适合处理大量数据和需要快速数据访问的应用程序 它使用文档数据模型 而不是传统的表结构 这使得它非常适合存储和查询复杂的数据结构 以下是MongoDB的一些主要特点和功能 文档数据模
  • Vivado中FFT核的使用解析及Matlab实现

    Vivado中FFT核的使用解析及Matlab实现 傅里叶变换 Fast Fourier Transform FFT 是一种重要的信号处理技术 广泛应用于音频 图像 通信等领域 在Vivado开发环境中 针对FFT操作提供了专门的IP核 可
  • js中对象值多个值快速置空

    1 批量处理制空的应用场景 比如我们关闭el dialog的弹框 再次打开编辑时 需要清空上次编辑时页面的值 这个时候我们需要在close方法内将弹框里面所渲染的值都值空 而一般对象的值一个个去置空在维护上不方便 所以采用这种统一的处理 后
  • 攻防世界 disabled_button

    查看页面源代码后发现 有个disabled class 标签 上网查看该标签的作用 发现只要把该标签删掉就能点击这个按钮了 使用bp抓包 如果直接forward则无法修改response回来的内容 因此在forward之前 需要点击acti
  • 数据迁移 java_数据迁移的成功策略

    迁移数据是一个具有挑战性的过程 将面临一些重大风险 因此必须尽可能有效地进行计划 执行 测试 数据迁移是将数据从源系统传输到目标系统的过程 这是任何数据存储专业人员的核心任务 数据迁移很重要 因为它是升级或整合服务器和存储硬件 或添加数据密
  • 如何快速入门 Python

    学习任何一门语言都是从入门 1 年左右 通过不间断练习达到熟练水准 3 到 5 年 少数人最终能精通语言 成为执牛耳者 他们是金字塔的最顶层 虽然万事开头难 但好的开始是成功的一半 今天这篇文章就来谈谈如何开始入门 Python 只要方向对
  • gerrit REST API

    查看REST API支持的所有命令 ssh p 29418 user gerrit host gerrit help gerrit COMMAND ARG help h end of options help h display this
  • Playwright直接控制本地Chrome浏览器的方法

    Playwright默认调用的是chromium浏览器 并且使用的是无痕模式 有时我们的一些cookie登录信息保存在我们日常使用的Chrome浏览器上 不想每次运行脚本都要去登录这么麻烦 那么playwright其实也可以直接调用我们平时
  • 【华为OD机试 2023】 匿名信(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • std::stoi系列函数自动识别8进制、16进制数的方法

    像这样写只能转为0 string str 0x12 int i stoi str 正确的写法应该是这样 string str 0x12 int i stoi str 0 0 指定base是0 函数则自动判断 不写的话 默认值是10 当然不给
  • Java类和对象的练习题

    1 冒泡排序 package one 使用冒泡排序 实现如下的数组从小到大排序 int arr new int 34 5 22 98 6 76 0 3 public class pao public static void main Str
  • 【转】计算机网络——三次握手与四次挥手

    转载来源 网络编程知识预备 2 三次握手与四次挥手 流量控制 滑动窗口 拥塞控制 半连接状态 2MSL 目录 一 三次握手 什么是三次握手 三次握手图解 过程解析 1 第一次握手 2 第二次握手 3 第三次握手 二 四次挥手 什么是四次挥手
  • 关于电脑找不到vcruntime140_1.dll,无法继续执行代码的解决方案-这几种解决方法轻松解决

    vcruntime140 1 dll文件是Windows操作系统中必要的动态链接库文件之一 当出现错误提示 vcruntime140 1 dll文件未找到 或 vcruntime140 1 dll已丢失 时 就需要对该问题进行解决 以下是一
  • springboot读写json文件,格式化写入json,java

    java springboot读写json文件 这是一个很酷的动作 而且是格式化写入json 美观漂亮 有问题可以咨询我的微信yizheng369 源码地址 https gitee com 618859 java springboot up
  • 属性重要性的举例(定性数据聚类)

    近日在解决一组定性数据的聚类问题 看文献时觉得论文中 基于属性重要性的定性数据聚类方法 举例不太容易理解 尤其是对我这种不喜欢看数学公式的人 所以写了这篇以备忘 1 基础知识 粗糙集和等价关系可参考 https blog csdn net
  • JAVAのIO框架---commons-io

    commons io包下载地址 Commons IO Download Apache Commons IO 进入后点击第二个链接下载 解压完后 箭头所指就是我们这次要用的jar包了 复制它 进入idea 导入jar包最关键的一步来了 右键粘
  • 3.【多级缓存架构】数据库和缓存不一致的情况分析和解决方案

    3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 文章目录 3 多级缓存架构 数据库和缓存不一致的情况分析和解决方案 1 最初级的缓存不一致的问题以及解决方案 1 1 问题 先修改数据库 在删除缓存 如果删除缓存失败了 就会导致数据
  • 基于express的文件上传功能实现

    基于express 的文件上传功能 功能描述 可以上传文件 并在后台中看到上传的文件 可以上传图片 并进行一个简单预览 点击提交后可以在后台中看到 功能展示 功能实现 index html