diff --git a/src/pages/FriendMoments/FriendMoments.jsx b/src/pages/FriendMoments/FriendMoments.jsx
index 526c06d..9595b8b 100644
--- a/src/pages/FriendMoments/FriendMoments.jsx
+++ b/src/pages/FriendMoments/FriendMoments.jsx
@@ -5,6 +5,13 @@
 import { Edit, GoodTwo, Comment } from '@icon-park/react';
 import { UserContext } from '../../context/UserContext'; // 引入用户上下文
 
+// 修改后的封面图 URL 拼接函数
+const formatImageUrl = (url) => {
+  if (!url) return '';
+  const filename = url.split('/').pop(); // 提取文件名部分
+  return `http://localhost:8080/uploads/post/${filename}`;
+};
+
 const FriendMoments = () => {
   const [feeds, setFeeds] = useState([]);
   const [filteredFeeds, setFilteredFeeds] = useState([]);
@@ -191,12 +198,6 @@
       return;
     }
 
-    // 检查是否已经点赞，防止重复请求
-    // const currentFeed = feeds.find(feed => feed.postNo === dynamicId);
-    // if (currentFeed && currentFeed.liked) {
-    //   console.warn('尝试重复点赞，已忽略');
-    //   return;
-    // }
 
     console.log('当前用户ID:', userId);
     console.log('即将点赞的动态ID:', dynamicId);
@@ -400,17 +401,6 @@
           <Edit theme="outline" size="18" style={{ marginRight: '6px' }} />
           创建动态
         </button>
-        {/* <div className="f-search-bar">
-          <input
-            className="search-input"
-            type="text"
-            value={query}
-            onChange={e => setQuery(e.target.value)}
-            placeholder="输入要搜索的动态"
-          />
-          <button className="search-btn" onClick={handleSearch}>搜索</button>
-          <button className="search-btn" onClick={handleReset}>重置</button>
-        </div> */}
       </div>
 
       <div className="feed-list">
@@ -429,7 +419,11 @@
             <div className="feed-item" key={feed.postNo || `feed-${Math.random()}`}>
               {/* 显示发布者信息 */}
               <div className="feed-author">
-                <img src={feed.avatar_url || 'https://example.com/default-avatar.jpg'} alt={feed.username || '用户头像'} />
+              <img
+                className="user-avatar"
+                src={feed.avatar_url || 'https://example.com/default-avatar.jpg'}
+                alt={feed.username || '用户头像'}
+              />
                 <div>
                   <h4>{feed.username || '未知用户'}</h4>
                   <span className="feed-date">{new Date(feed.postTime || Date.now()).toLocaleString()}</span>
@@ -441,17 +435,17 @@
 
               {feed.imageUrl && (
                 <div className="feed-images">
-                  {/* 处理可能是单张图片或多张图片的情况 */}
                   {typeof feed.imageUrl === 'string' ? (
-                    <img src={feed.imageUrl} alt="动态图片" />
+                    <img src={formatImageUrl(feed.imageUrl)} alt="动态图片" />
                   ) : (
                     feed.imageUrl.map((url, i) => (
-                      <img key={i} src={url} alt={`动态图${i}`} />
+                      <img key={i} src={formatImageUrl(url)} alt={`动态图${i}`} />
                     ))
                   )}
                 </div>
               )}
 
+
               <div className="feed-footer">
                 <div className="like-container">
                     <button className="icon-btn" onClick={() => handleLike(feed.postNo, feed.liked, feed.user_id)}>
