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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
node Express 框架
Express事实上Node内置的http模块上构建的一层抽象。理论上所有Express实现的功能都能用Node实现
mySoul
2018/07/29
5.4K0
express + multer 文件上传入门
首先利用express-generator express框架生成器生成我们的项目 这里我们采用ejs模板引擎(因为我只会这个)
Theone67
2019/11/21
1.5K0
Node Express使用Multer中间件实现文件上传
Multer是一个Node.js中间件,用于处理 multipart/form-data类型的表单数据,它主要用于上传文件。它是写在busboy之上非常高效。
吴佳
2022/09/26
3.2K0
如何使用Node.js和Express实现Web应用程序中的文件上传
处理文件上传:使用Node.js和Express构建Web应用程序时,文件上传是一个常见的需求。在本教程中,您将学习如何使用Node.js和Express处理上传的文件。
zayyo
2024/02/09
8610
如何在Node.js和Express中上传文件
大量的移动应用程序和网站允许用户上传个人资料图片和其他文件。 因此,在使用Node.js和Express构建REST API时,通常需要处理文件上传。
ccf19881030
2020/10/26
6.9K0
如何在Node.js和Express中上传文件
node实现静态资源的上传发布
需求是这样的:**产品通过axure生成导出的html页面发给开发的时候需要安装插件,很不方便,为方便大家的协同,决定开发一个简单的协同共享工具,实现导出html页面的打包上传,并发布生成可访问的url。**本文将讲述在node环境下如何实现上述的需求。
牛老师讲GIS
2022/05/10
7000
node实现静态资源的上传发布
nodejs服务器如何接收前端传递的文件
之前发过用nodejs搭建静态服务器的文章,今天和大家探讨一下如何利用nodejs接收前端上传的文件。
挥刀北上
2019/07/19
15.3K0
nodejs服务器如何接收前端传递的文件
Nodejs进阶:基于express+multer的文件上传
IMWeb前端团队
2017/12/29
2.9K0
在Node.js中使用Multer进行文件上传
几个月前,我写了一篇有关如何使用 express-fileupload中间件在Node.js和Express中上传文件的 文章。
ccf19881030
2020/10/26
4.5K0
在Node.js中使用Multer进行文件上传
Vue + Node.js 搭建「文件上传」管理后台
本教程手把手带领大家搭建一套通过 Vue + Node.js 上传文件的后台系统,只要你跟随本教程一步步走,一定能很好的理解整个前后端上传文件的代码逻辑。前端我们使用 Vue + Axios + Multipart 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer 来搭建后端上传文件处理应用。
蒋川
2022/04/22
12.5K0
Vue + Node.js 搭建「文件上传」管理后台
Express4.x API (二):Request (译)
最近学习express想要系统的过一遍API,www.expressjs.com是express英文官网(进入www.epxressjs.com.cn发现也是只有前几句话是中文呀~~),所以自己准备在
okaychen
2018/01/05
2.4K0
nodeJS之Express框架---中间件
Express框架中一个非常重要的概念——中间件。在Express框架中,允许通过中间件的使用来调用各种第三方类库,这让我们的开发工作变得更为方便,也使得我们可以开发出各种更为强大的应用程序。
IT工作者
2022/05/13
2.7K0
请求与上传文件,Session简介,Restful API,Nodemon
POST请求借助body-parser模板引擎以及req.body()函数得到参数。
达达前端
2019/12/20
1.7K0
React + Node.js 全栈实战教程 - 手把手教你搭建「文件上传」管理后台
本教程手把手带领大家搭建一套通过 React + Node.js + Mongodb 上传文件的后台系统,只要你跟随本教程一步步走,一定能很好的理解整个前后端上传文件的代码逻辑。前端我们使用 Reactjs + Axios 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer + Mongodb 来搭建后端上传文件处理应用。
蒋川@卡拉云
2022/07/11
15.9K0
React + Node.js 全栈实战教程 - 手把手教你搭建「文件上传」管理后台
node+express使用multiparty实现文件上传
文件上传在一个项目中是相对于比较基础的功能,今天分享一下自己是如何在nodejs中使用中间件multiparty实现文件上传的。nodejs环境的搭建就不赘述了,直奔主题吧!
算法与编程之美
2019/07/17
2K0
node+express使用multiparty实现文件上传
文件分片上传设计
现在是接近凌晨了,突然有伙伴给我提到了文件分片上传的事情,我一想,这个我熟悉呀。因为在若干月前,我想亲手写了这部分的代码,还给自己整理出了飞书文档。对,一看文件,原来是遥远的2023年6月20日。
shigen
2023/11/08
6180
文件分片上传设计
nodejs文件上传组件multer使用
多图上传,发送端: var express = require('express') var rp = require('request-promise') var fs = require("fs
用户1141560
2017/12/26
2.9K0
Node中间件multer文件上传实践
单文件上传,接收一个以fieldname命名的文件,文件信息保存在req.file
RtyXmd
2018/08/30
8330
Node中间件multer文件上传实践
原生js使用FormData上传文件并监听进度(附前后端实现源码)
本文代码及相关素材已经托管到Github仓库, 永久下载地址https://github.com/zhaoolee/Blog/tree/master/form_data_upload_file
zhaoolee
2019/06/14
4.3K0
原生js使用FormData上传文件并监听进度(附前后端实现源码)
node.js中间件multer的使用
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说node.js中间件multer的使用,希望能够帮助大家进步!!!
Java架构师必看
2022/11/14
2.6K0
node.js中间件multer的使用
相关推荐
node Express 框架
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验