diff --git a/personal-blog/backend/uploads/20260824_bcaa87be.jpg b/personal-blog/backend/uploads/20260824_bcaa87be.jpg new file mode 100644 index 0000000..1987c99 Binary files /dev/null and b/personal-blog/backend/uploads/20260824_bcaa87be.jpg differ diff --git a/personal-blog/backend/uploads/crawl_20260825_86518d9e.png b/personal-blog/backend/uploads/crawl_20260825_86518d9e.png new file mode 100644 index 0000000..4b63d00 Binary files /dev/null and b/personal-blog/backend/uploads/crawl_20260825_86518d9e.png differ diff --git a/personal-blog/backend/uploads/crawl_20260825_a4f89ab3.png b/personal-blog/backend/uploads/crawl_20260825_a4f89ab3.png new file mode 100644 index 0000000..b645767 Binary files /dev/null and b/personal-blog/backend/uploads/crawl_20260825_a4f89ab3.png differ diff --git a/personal-blog/backend/uploads/crawl_20260825_a7c299a7.png b/personal-blog/backend/uploads/crawl_20260825_a7c299a7.png new file mode 100644 index 0000000..ab122db Binary files /dev/null and b/personal-blog/backend/uploads/crawl_20260825_a7c299a7.png differ diff --git a/personal-blog/backend/uploads/crawl_20260825_b349ecf4.png b/personal-blog/backend/uploads/crawl_20260825_b349ecf4.png new file mode 100644 index 0000000..b2ebf1b Binary files /dev/null and b/personal-blog/backend/uploads/crawl_20260825_b349ecf4.png differ diff --git a/personal-blog/backend/uploads/crawl_20260825_faaa28aa.png b/personal-blog/backend/uploads/crawl_20260825_faaa28aa.png new file mode 100644 index 0000000..9c46a03 Binary files /dev/null and b/personal-blog/backend/uploads/crawl_20260825_faaa28aa.png differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_20260824_bcaa87be.jpg b/personal-blog/backend/uploads/thumbnails/thumb_20260824_bcaa87be.jpg new file mode 100644 index 0000000..8f5af3b Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_20260824_bcaa87be.jpg differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_86518d9e.png b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_86518d9e.png new file mode 100644 index 0000000..e58ffad Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_86518d9e.png differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a4f89ab3.png b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a4f89ab3.png new file mode 100644 index 0000000..1e82cc3 Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a4f89ab3.png differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a7c299a7.png b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a7c299a7.png new file mode 100644 index 0000000..45df94b Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_a7c299a7.png differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_b349ecf4.png b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_b349ecf4.png new file mode 100644 index 0000000..13e4bb5 Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_b349ecf4.png differ diff --git a/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_faaa28aa.png b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_faaa28aa.png new file mode 100644 index 0000000..c1a8440 Binary files /dev/null and b/personal-blog/backend/uploads/thumbnails/thumb_crawl_20260825_faaa28aa.png differ diff --git a/personal-blog/frontend/src/api/config.js b/personal-blog/frontend/src/api/config.js index adc6f70..6a37957 100644 --- a/personal-blog/frontend/src/api/config.js +++ b/personal-blog/frontend/src/api/config.js @@ -20,6 +20,14 @@ api.interceptors.request.use( if (token) { config.headers.Authorization = `Bearer ${token}` } + // FormData 上传必须移除 JSON 默认 Content-Type,让浏览器自动加 multipart boundary + if (typeof FormData !== 'undefined' && config.data instanceof FormData) { + if (typeof config.headers.delete === 'function') { + config.headers.delete('Content-Type') + } else { + delete config.headers['Content-Type'] + } + } return config }, (error) => Promise.reject(error)