feat(image): 优化图片上传和预览功能

- 修改图片上传接口,支持用户 ID 和 Markdown ID 参数
- 实现在线预览功能,支持多种文件类型
- 优化图片插入到 Markdown 编辑器的逻辑
- 更新数据库配置和连接字符串
This commit is contained in:
2025-08-01 17:21:16 +08:00
parent 7a7247a851
commit 2bb265d23f
13 changed files with 91 additions and 30 deletions

View File

@@ -29,10 +29,12 @@ export const deleteImages = (list) => {
})
}
// 上传图片
export const uploadImage = (file) => {
export const uploadImage = (file, userId, markdownId) => {
const formData = new FormData()
if (file) formData.append('file', file)
return axiosApi.post('/api/images?markdownId', formData, {
if (userId) formData.append('userId', userId)
if (markdownId) formData.append('markdownId', markdownId)
return axiosApi.post('/api/images', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}

View File

@@ -527,14 +527,16 @@ const editNote = async (file) => {
// 图片上传
const handleImageUpload=async (files) => {
const promise = await uploadImage(files);
const promise = await uploadImage(files[0]);
if (promise.code !== 200) {
ElMessage.error(promise.msg);
return;
}
const url = promise.data;
imageUrls.value.push(url);
vditor.value.insertValue(`![${files[0].name}](${url})`);
const url = promise.data.url;
// 修正IP地址并正确拼接
const baseUrl = "http://127.0.0.1:8084";
imageUrls.value.push(baseUrl + url);
vditor.value.insertValue(`![${files[0].name}](${baseUrl + url})`);
}
const debouncedSave = (value) => {

View File

@@ -21,10 +21,10 @@
<script>
import MarkdownEditor from '@/components/MarkdownEditor.vue';
import VMdPreview from '@kangc/v-md-editor/lib/preview';
import { ref } from 'vue';
import { ElMessage } from 'element-plus';
import axios from 'axios';
import {uploadImage} from "@/api/CommonApi.js";
export default {
name: 'MarkdownEditor',
@@ -85,19 +85,8 @@ export default {
const handleImageUpload = async (event, insertImage, files) => {
const file = files[0];
const formData = new FormData();
formData.append('file', file);
formData.append('userId', userId.value);
formData.append('markdownId', currentFileId.value);
try {
const API_BASE_URL = 'http://localhost:8083';
const response = await axios.post(`${API_BASE_URL}/api/images`, formData, {
withCredentials: true,
headers: {
'Content-Type': 'multipart/form-data'
}
});
const response = await uploadImage(file, userId.value, currentFileId.value);
// 插入图片到编辑器
insertImage({