Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在 linux 上搭建 express 图床服务(支持多图上传),奥利给!

在 linux 上搭建 express 图床服务(支持多图上传),奥利给!

作者头像
掘金安东尼
发布于 2024-01-28 00:52:41
发布于 2024-01-28 00:52:41
38600
代码可运行
举报
文章被收录于专栏:掘金安东尼掘金安东尼
运行总次数:0
代码可运行

前言

话不多说,直接开撸🦌!

在 linux 上安装 node 环境

  1. 去官网下载

下载成功后用 WinSCP 上传至 /root 目录

  1. 执行命令解压安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -xvf node-v12.18.1-linux-x64.tar.xz
  1. 创建文件夹 ~/app/nodejs,然后移到该目录下(方便管理)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mv node-v12.18.1-linux-x64 ~/app/nodejs
  1. 全局配置 node
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo ln -s ~/app/nodejs/node-v12.18.1-linux-x64/bin
  1. 查看是否安装成功
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 node -v

安装 Express 测试 app.js

Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install express --save

新建 app.js,开启 3000 端口(并且要在安全组添加3000端口允许访问)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var express = require('express');
var app = express();
app.get('/', function (req, res) {
    res.send('Hello express!');
});
var server = app.listen(3000, function () {
    var host = server.address().address;
    var port = server.address().port;
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
node app.js // 启动服务

🆗到这就证明已成功部署 node demo 服务了!

图床-支持多张上传

  1. npm install formidable
  2. npm install multer
  3. 新建文件夹目录 uploads
  4. 新建 index.html,这里直接贴代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
    <div style="max-width:1200px;margin:0 auto;text-align: center;margin-top: 150px;">
        <input type="file" class="file" name="file" multiple="multiple" />
        <ul id='urlList'></ul>
    </div>
</body>
<script>
    document.querySelector('.file').addEventListener('change', function (e) {
        let files = e.target.files
        if (!files.length) return
        // 上传文件 创建FormData
        let formData = new FormData()
        // 遍历FileList对象,拿到多个图片对象
        for (let i = 0; i < files.length; i++) {
            // formData中的append方法 如果已有相同的键,则会追加成为一个数组  注意:这里需要使用formData.getAll()获取
            formData.append('upFile', files[i], files[i].name)
        }
        console.log(formData.getAll('upFile'))
        // 将formdata发送到后台即可
        // 我用的 axios.post('url', formData)
        let xhr = new XMLHttpRequest()
        xhr.open('post', '/upload', true)
        xhr.send(formData);
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4 && xhr.status === 200) {
                alert('success')
                console.log(xhr.responseText)
                let resObj = JSON.parse(xhr.responseText).message;
                let hostport = document.location.host; //ip:端口号
                resObj && resObj.forEach(item => {
                    document.getElementById('urlList').innerHTML += '<a href=http://' + hostport +
                        item + '>' + hostport + item + '</a><br>';
                })
            }
        }
    })
</script>
  1. 修改app.js,这里直接贴代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require('express')
const fs = require("fs");
const app = express()
const path = require('path')
const multer = require('multer')
const multerObj = multer({
    dest: 'uploads/'
}) //上传中间件

app.use(multerObj.any())

// 允许直接访问静态文件
app.use('/uploads', express.static('uploads'));

app.get('/', (req, res, next) => {
    res.setHeader('Content-Type', 'text/html')
    res.sendFile(path.join(__dirname, 'index.html'))
})

app.post('/upload', (req, res, next) => {
    console.log(req.files)
    file = req.files
    resArr = []; // 返给前端做回显 link 
    // 多图:修改文件后缀
    file.forEach((item) => {
        //以下代码得到文件后缀
        name = item.originalname;
        nameArray = name.split('');
        var nameMime = [];
        l = nameArray.pop();
        nameMime.unshift(l);
        while (nameArray.length != 0 && l != '.') {
            l = nameArray.pop();
            nameMime.unshift(l);
        }
        //Mime是文件的后缀
        Mime = nameMime.join('');
        //重命名文件 加上文件后缀
        // 这里的路径问题一定要注意:本瓜反复测试了很多才发现是“路径问题导致不能正常修改文件名”
        fs.rename('./uploads/' + item.filename, './uploads/' + item.filename + Mime, (err) => {
            if (err) {
                console.log(err)
            }
        });
        resArr.push(`/uploads/${item.filename + Mime}`)
    });
    res.send(200, {
        'code': 1,
        message: resArr
    })
})
app.listen(3000)
  1. 查看进程,杀死进程,重启
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
netstat -ntlp
kill -9  NODE_PID
node app.js

如果在 aliyun 云控制台直接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ctrl + c
node app.js
  1. 效果展示:多图上传,返回图床链接,支持预览,大功告成!(样式自行优化啦!)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
芯片也开源?网红RISC-V,到底是什么东东?
今天小枣君又要给大家介绍一个开源的东西,那就是现在半导体行业的网红、被很多人称之为“开源芯片”的RISC-V。
鲜枣课堂
2019/07/20
8660
RISC-V 简介(1)RISC-V的由来
指令集架构(Instruction Set Architecture, ISA),是一种抽象模型,包括指令集,寄存器,内存处理,寻址模式,中断和异常处理,以及外部的I/0接口。指令集包括一系列的操作码(opcode),或机器码(machine code),以及特定处理器执行的基本命令。ISA以不依赖于其实现特性方式,指定了在其实现上运行机器码的行为。中央处理器(central processing unit, CPU)可以看作是ISA的实现。
IC知识库
2021/07/28
1.3K0
RISC-V 简介(1)RISC-V的由来
NXP恩智浦VEGA织女星开发板免费申请!
大概两周前申请了一块NXP恩智浦的开发板,今天终于收到了!在这里推荐给大家,官方网站刚上线一个月左右,目前申请的人还不算多,感兴趣的朋友可以申请一个,体验一下这个四核性能怪兽。大厂就是大气,包装盒,开发板,Micro USB数据线,跳线帽一应俱全,全国包邮!
单片机点灯小能手
2020/07/17
1K0
NXP恩智浦VEGA织女星开发板免费申请!
RISC-V开源优势愈加显著 ,CPU架构「三足鼎立」之势已成?
机器之心报道 编辑:维度、陈萍 在 CPU 架构领域,Arm 架构和英特尔 x86 架构分别在移动端和桌面端占据了绝大部分市场份额。但是,Arm 架构的收费授权模式和 x86 架构的不对外授权使得越来越多的芯片研发企业转向了开源架构 RISC-V,其开源性和易用性为芯片市场打开了另一扇大门。近日,IEEE Spectrum 的一篇文章详述了 RISC-V 在全球芯片开发商中的崛起态势,并强调开源将在芯片架构竞争中发挥关键作用。 如今,大多数智能手机、平板、路由器等移动端 CPU 基于 Arm 架构,属于精简
机器之心
2023/03/29
5070
RISC-V开源优势愈加显著 ,CPU架构「三足鼎立」之势已成?
未来2到3年,RISC-V将超越所有架构!
虽然RISC-V架构在诞生之初,并不被市场所关注。直到2015年,非营利性的RISC-V国际基金会正式成立,RISC-V的生态建设才开始加速。
芯智讯
2023/08/09
1.1K0
未来2到3年,RISC-V将超越所有架构!
首款RISC-V笔记本电脑疑曝光,或配Windows系统,年底能来吗
机器之心报道 编辑:杜伟 如果发布了,你会去买吗? 在芯片行业,Arm 和 x86 是当前主流架构,开放的 RSIC-V 被认为是未来的方向。2021 年 3 月,曾与 Arm、x86 比肩的 MIPS 被老东家抛弃,转投 RISC-V。至此,CPU 架构三足鼎立之势愈加明显。 2022 年 2 月,英特尔也宣布加入 RISC-V 组织,二者的合作将改变芯片业界的游戏规则,这或许会是 RISC-V 成为主流的一个转折点。 如此种种,让人不禁越来越期待 RISC-V 架构处理器的笔记本产品能够早日到来。 此前
机器之心
2022/05/23
4310
首款RISC-V笔记本电脑疑曝光,或配Windows系统,年底能来吗
科技巨头欲转向开源架构 RISC-V,因 ARM 授权费用太贵
不久前,特斯拉加入 RISC-V 基金会,并考虑在新款芯片中使用免费的 RISC-V 设计。至此,已有 IBM、NXP、西部数据、英伟达、高通、三星、谷歌、华为等 100 多家科技公司加入 RISC-V 阵营。
顶级程序员
2018/07/23
7850
动态 | 伯克利牵手清华成立 RIOS 实验室,RISC-V 有望提升至最先进水平?
大卫·帕特森(David Patterson)教授作为最早提出「精简指令集」(RISC)体系的专家,现为加州大学伯克利分校电子工程与计算机科学学院 Pardee 荣誉教授,清华大学荣誉博士,谷歌公司杰出工程师,RISC-V(「第五代精简指令集」)基金会创始人。
AI科技评论
2019/06/18
6170
动态 | 伯克利牵手清华成立 RIOS 实验室,RISC-V 有望提升至最先进水平?
ARM、MIPS与RISC-V指令集有什么区别?
ARM、MIPS 和 RISC-V 是三种常见的精简指令集计算(RISC,Reduced Instruction Set Computing)架构,各自都有其特点和设计理念。
不脱发的程序猿
2025/02/25
1660
ARM、MIPS与RISC-V指令集有什么区别?
Codasip相海英:用顶尖CPU IP技术和服务打开中国市场,RISC-V正在改变嵌入式处理世界 | 镁客请讲
随着行业对创新和低成本IP的需求日趋强烈,相较于ARM架构,开源、成本更低的RISC-V近年来越来越受欢迎,甚至有部分业内人士认为,RISC-V将取代ARM。
镁客网
2019/09/25
8620
Codasip相海英:用顶尖CPU IP技术和服务打开中国市场,RISC-V正在改变嵌入式处理世界 | 镁客请讲
嵌入式芯片IP之争:ARM的商业帝国能否被新贵RISC-V撼动?
ARM和RISC-V,一个老牌武林霸主,一个年轻技术新贵,在新的科技浪潮和产业革命面前,他们的角逐,值得想象。
镁客网
2018/07/31
4820
嵌入式芯片IP之争:ARM的商业帝国能否被新贵RISC-V撼动?
欲将RISC-V架构收入囊中,英特尔拟花费20亿美元收购SiFive
机器之心报道 编辑:蛋酱、陈萍 科技巨头纷纷转投 RISC-V,英特尔:我也想。 据外媒路透社报道,英特尔正计划以 20 亿美元的价格收购加州半导体初创公司 SiFive。 SiFive 成立于 2015 年,是全球首家基于 RISC-V 架构的半导体企业,最新估值在 5 亿美元左右。 半导体企业转投 RISC-V 架构,不算是新鲜事。去年,英伟达宣布要以 400 亿美元收购 ARM 的消息,而 ARM 架构的授权使用者中包括英伟达的一系列竞争对手,这让很多半导体行业内的公司感到「危机四伏」,RISC-V
机器之心
2023/03/29
3630
欲将RISC-V架构收入囊中,英特尔拟花费20亿美元收购SiFive
《手把手教你设计CPU——RISC-V处理器》读书笔记
首先感谢面包板社区提供这本《手把手教你设计CPU——RISC-V处理器篇》书籍的试读机会。这本书和另外一本《 RISC-V架构与嵌入式开发 》是国内最先出版的两本关于RISC-V处理器的书籍,作者是胡振波先生,这里还要感谢胡老师。胡振波先生是国内最早开始研究RISC-V架构的,有超过8年的CPU以及超过10年的ASIC设计与验证经验,历任Marvell CPU高级设计工程师,Synopsys ARC系列处理器内核研发经理等职务,有着近20年的行业积累。
单片机点灯小能手
2020/07/16
2.7K0
慌不择路?ARM建网站专撕RISC-V,连自家员工都看不下去了
李杉 夏乙 编译整理 量子位 出品 | 公众号 QbitAI 软银旗下的芯片设计方案巨头ARM,最近搬起石头,砸了自己的脚。 不知出于什么考虑,ARM几天前发布了一个网站,专门用来攻击他们的竞争对手、
量子位
2018/07/19
7600
英特尔又做了一个违背祖宗的决定:布局RISC-V
SiFive是一家处理器内核、AI加速器和SoC IP供应商,由加州大学伯克利分校教授、RISC-V创始人之一Krste Asanovic,和他的两名研究生共同创立。
量子位
2021/06/17
4100
ARM太贵,80多家科技巨头悄然站队开源芯片架构RISC-V
“ARM实在太贵了。”信息安全芯片公司Dover Microsystems联合创始人Jothy Rosenberg说。你可能对这位创业者不熟悉,没关系,众多你天天听说的公司也和他有同感。
量子位
2018/07/24
5680
ARM太贵,80多家科技巨头悄然站队开源芯片架构RISC-V
Arm和AMD“熄火”后,高通大力投入的RISC-V 能否给华为托底?
对于想要破局的国内科技公司来说,积极发挥对这一架构的影响,依托市场走势去做深入改进以使其找到自己独有的应用方向,或是更加需要考虑的事。
镁客网
2019/06/20
8490
Arm和AMD“熄火”后,高通大力投入的RISC-V 能否给华为托底?
「芯片和操作系统」RISC-V上操作系统的未来
今天我将首先向您介绍RISC-V,它是什么,为什么您应该感兴趣。 我将谈谈RISC-V在状态方面的位置,选择一些主题,我认为这些主题与我们的软件受众有关,现在正在讨论该社区正在进行的讨论,争议和事情。 积极参与发展,然后展望未来以及卡片中的内容,可能会有什么机会与开放标准和开放式指令集做一些不同的事情。
架构师研究会
2019/06/05
4.6K1
「芯片和操作系统」RISC-V上操作系统的未来
四大主流芯片架构(X86、ARM、RISC-V和MIPS)
X86是微处理器执行的计算机语言指令集,指一个Intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。1978年6月8日,Intel 发布了新款16位微处理器 8086,也同时开创了一个新时代:X86架构诞生了。 X86指令集是美国Intel公司为其第一块16位CPU(i8086)专门开发的,美国IBM公司1981年推出的世界第一台PC机中的CPU–i8088(i8086简化版)使用的也是X86指令。
全栈程序员站长
2022/09/01
11.7K0
MIPS放弃自研架构,转投RISC-V,可用处理器种类进一步减少
机器之心报道 编辑:陈萍、杜伟 曾与 Arm、X86 比肩的 MIPS,现在也被老东家抛弃,转投 RISC-V。 还记得 2018 年 6 月,Wave Computing 收购老牌半导体 IP 公司 MIPS 之时,一度风光无限。然而,收购没过多久,就在近日成功获得破产拍卖,更名为 MIPS。现如今也要放弃自研架构 MIPS,转投 RISC-V。 MIPS Technologies 不在设计 MIPS 处理器。相反,其加入了 RISC-V 阵营。这意味着 MIPS Technologies 放弃了具有悠久
机器之心
2023/03/29
5540
MIPS放弃自研架构,转投RISC-V,可用处理器种类进一步减少
推荐阅读
相关推荐
芯片也开源?网红RISC-V,到底是什么东东?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验