前言
因为写了一个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 express
和npm install cors
接着访问你的表单那个html文件存放的位置,比如叫test.html,那就通过域名打开它,
通过提交表单以修改你想修改的html文件
效果图
版权属于:不冷
本文链接:https://www.buleng.xyz/archives/231/
转载时须注明出处及本声明
注意两个都必须是http或者两个都必须是https的才可以