前言

因为写了一个html,但是上面的内容只有我登录我的宝塔才能修改,我怎么才能让别人也能编辑这个文件呢?总不能宝塔交给别人吧,所以这里提一下解决方式。

内容

后端可以用Java写,但是最好的还是python或者nodejs,运行比较方便
看一下node.js

const express = require('express');
const fs = require('fs');
const path = require('path');
const cors = require('cors');  // 引入 cors 模块
const app = express();
const port = 3000;

// 使用 CORS 中间件来解决跨域问题
app.use(cors());  // 默认允许所有来源

// 中间件处理 JSON 请求
app.use(express.json());

// 路由:处理表单提交
app.post('/modify-file', (req, res) => {
    const { title, content, open } = req.body;
    
    // 检查是否提供了姓名
    if (!title || !content || !open) {
        return res.status(400).json({ message: '不能提交空值' });
    }

    // HTML 文件的路径(根据宝塔面板上的文件路径调整)
    const filePath = '/www/wwwroot/xxx/xxx.html';  // 修改为实际的 HTML 文件路径
    
    // 读取 HTML 文件
    fs.readFile(filePath, 'utf8', (err, data) => {
        if (err) {
            return res.status(500).json({ message: '读取文件失败' });
        }

        // 修改文件内容,这里假设你要修改一个 id 为 'username' 的元素
        // const updatedData = data.replace(/<span id="username">.*?<\/span>/, `<span id="username">${name}</span>`);
             // 修改 <title> 标签的内容
        let updatedData = data.replace(/<title>.*<\/title>/, `<title>${title}</title>`);

        // 修改 <div class="box"> 标签的内容
        updatedData = updatedData.replace(/<div class="box">.*<\/div>/, `<div class="box">${content}</div>`);

        // 修改 <span class="heart-text"> 标签的内容
        updatedData = updatedData.replace(/<span class="heart-text">.*<\/span>/, `<span class="heart-text">${open}</span>`);


        // 写回 HTML 文件
        fs.writeFile(filePath, updatedData, 'utf8', (err) => {
            if (err) {
                return res.status(500).json({ message: '保存文件失败' });
            }

            // 返回成功的响应
            res.json({ message: '文件已成功更新' });
        });
    });
});

// 启动服务器
app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});

const filePath = '/www/wwwroot/xxx/xxx.html'; // 修改为实际的 HTML 文件路径
记得修改这个,就是你要修改文件的路径
app.post('/modify-file', 这个是你要提交的路径,也就是你的填表单的路径要调用这个

然后是你的表单的html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
    <title>Love Change</title>
    
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f7f7f7;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .container {
            background-color: #fff;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            border-radius: 8px;
            width: 400px;
            box-sizing: border-box;
        }
        h1 {
            text-align: center;
            font-size: 24px;
            color: #333;
        }
        form {
            display: flex;
            flex-direction: column;
        }
        label {
            font-size: 16px;
            color: #333;
            margin-bottom: 8px;
        }
        input[type="text"] {
            padding: 10px;
            margin-bottom: 20px;
            border: 1px solid #ccc;
            border-radius: 4px;
            font-size: 16px;
        }
        button {
            padding: 10px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            font-size: 16px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        button:hover {
            background-color: #45a049;
        }
        button:active {
            background-color: #388e3c;
        }
        .error {
            color: red;
            font-size: 14px;
            text-align: center;
            margin-top: 10px;
        }
    </style>
</head>
<body>

<div class="container">
    <h1>修改网页内容!</h1>
    <form id="nameForm">
        <label for="title">网页标题:</label>
        <input type="text" id="title" name="title" required>
        
        <label for="content">爱心中间内容:</label>
        <input type="text" id="content" name="content" required>

        <label for="open">设置“开启”文字:</label>
        <input type="text" id="open" name="open" required>

        <button type="submit">提交</button>
    </form>
    <div class="error" id="errorMessage"></div>
</div>

<script>
    document.getElementById("nameForm").addEventListener("submit", function(event) {
        event.preventDefault();  // 阻止表单默认提交

        // 获取输入框的值
        const title = document.getElementById("title").value;
        const content = document.getElementById("content").value;
        const open = document.getElementById("open").value;

        // 清除错误消息
        document.getElementById("errorMessage").innerHTML = "";

        // 发起 POST 请求
        fetch('http://xxxxx:3000/modify-file', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                title: title,
                content: content,
                open: open
            })
        })
        .then(response => response.json())
        .then(data => {
            alert(data.message);
        })
        .catch(error => {
            document.getElementById("errorMessage").innerHTML = '修改失败: ' + error.message;
        });
    });
</script>

</body>
</html>

// 发起 POST 请求

   fetch('http://xxxxx:3000/modify-file', {

这个请求就是发到node里面的那个路径

具体的要修改的那个html的话
里面只要有上述的几个标签和对应的class就行

<title>xxx</title>
<div class="box">我喜欢你</div>
<span class="heart-text">打开</span> 

总结

相信看到这里你已经会了,什么都不懂的小白还是不要尝试了
node.js需要下载,使用ssh连接你的服务器或者直接在宝塔里面安装
yum install -y nodejs npm
然后把上面第一个js文件放宝塔上面,使用xshell或者你的什么工具连接上了以后,cd到这个js文件的目录下
通过node app.js来运行这个文件(假如这个文件叫app.js)
运行失败需要你安装express和cors,使用npm install expressnpm install cors
接着访问你的表单那个html文件存放的位置,比如叫test.html,那就通过域名打开它,
通过提交表单以修改你想修改的html文件

效果图

表单提交

遮罩效果图

最后修改:2024 年 11 月 10 日 04 : 37 PM
如果觉得此文章有用,请随意打赏