|
|
|
@ -1,6 +1,10 @@
|
|
|
|
|
// utils.js
|
|
|
|
|
import { MarkdownToHtml } from '@ckeditor/ckeditor5-markdown-gfm/src/markdown2html/markdown2html.js';
|
|
|
|
|
import { HtmlToMarkdown } from '@ckeditor/ckeditor5-markdown-gfm/src/html2markdown/html2markdown.js';
|
|
|
|
|
import axios from 'axios';
|
|
|
|
|
// 导入ModulerUser模块
|
|
|
|
|
import ModulerUser from '../store/user.js';
|
|
|
|
|
|
|
|
|
|
// 获取用户配置
|
|
|
|
|
export function getUserConfigFromBackend() {
|
|
|
|
|
// TODO 请求用户样式
|
|
|
|
@ -95,8 +99,10 @@ export function getUserConfigFromBackend() {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isBase64(str) {
|
|
|
|
|
return /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/.test(str);
|
|
|
|
|
}
|
|
|
|
|
// TODO 实现自动保存saveData方法,将编辑内容发送至后端
|
|
|
|
|
// DFZ
|
|
|
|
|
export function saveData(data) {
|
|
|
|
|
// return new Promise( resolve => {
|
|
|
|
|
// setTimeout( () => {
|
|
|
|
@ -107,6 +113,65 @@ export function saveData(data) {
|
|
|
|
|
// } );
|
|
|
|
|
console.log('saving...');
|
|
|
|
|
console.log(data);
|
|
|
|
|
|
|
|
|
|
let encodedData;
|
|
|
|
|
if (typeof data ==='string') {
|
|
|
|
|
// 去除HTML标签,将内容转换为纯文本
|
|
|
|
|
const textWithoutTags = data.replace(/<[^>]*>/g, '');
|
|
|
|
|
// 使用btoa进行Base64编码,同时处理可能出现的编码异常情况(比如包含非ASCII字符等)
|
|
|
|
|
try {
|
|
|
|
|
encodedData = btoa(unescape(encodeURIComponent(textWithoutTags)));
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error('对文本内容进行Base64编码时出错:', e);
|
|
|
|
|
throw new Error('数据编码失败,请检查数据内容');
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
console.error('不支持的数据类型,请传入文本内容');
|
|
|
|
|
throw new Error('不支持的数据类型');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isBase64(encodedData)) {
|
|
|
|
|
console.error('Base64编码后的数据格式不正确');
|
|
|
|
|
throw new Error('数据格式错误');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 从ModulerUser模块的状态中获取相关信息
|
|
|
|
|
const { username, path } = ModulerUser.state;
|
|
|
|
|
const fileName = 'yourFileNameHere'; // 这里需要替换为实际的文件名
|
|
|
|
|
// path是相对用户主目录的路径各部分组成的数组,拼接成合适的相对路径字符串
|
|
|
|
|
const savePath = path.join('/');
|
|
|
|
|
|
|
|
|
|
const formData = new FormData();
|
|
|
|
|
formData.append('user_name', username);
|
|
|
|
|
formData.append('file_name', fileName);
|
|
|
|
|
formData.append('save_path', savePath);
|
|
|
|
|
formData.append('file_data', encodedData);
|
|
|
|
|
|
|
|
|
|
return axios.post('http://localhost:14514/admin/file/file_save', formData, {
|
|
|
|
|
headers: {
|
|
|
|
|
'Content-Type': 'multipart/form-data',
|
|
|
|
|
//'Authorization': `Bearer ${ModulerUser.state.access}`
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.then(response => {
|
|
|
|
|
if (response.status === 200 && response.data.code === 200 && response.data.data === "文件保存成功") {
|
|
|
|
|
console.log('文件保存成功,返回信息:', response.data);
|
|
|
|
|
return response.data;
|
|
|
|
|
} else {
|
|
|
|
|
console.error('文件保存失败,返回信息:', response.data);
|
|
|
|
|
throw new Error(`文件保存失败,返回信息: ${JSON.stringify(response.data)}`);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catch(error => {
|
|
|
|
|
if (error.response && error.response.status === 400) {
|
|
|
|
|
console.error('文件保存出现问题,可能是请求参数或后端业务逻辑执行出错,请检查相关信息');
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
console.error('保存文件出现其他错误:', error);
|
|
|
|
|
}
|
|
|
|
|
throw error;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|