diff --git a/src/api/torrent.js b/src/api/torrent.js
new file mode 100644
index 0000000..3c93697
--- /dev/null
+++ b/src/api/torrent.js
@@ -0,0 +1,100 @@
+import request from './request'
+
+/**
+ * 上传种子
+ * @param {FormData} formData - 包含种子文件和相关信息的表单数据
+ * @returns {Promise}
+ */
+export function uploadTorrent(formData) {
+  return request({
+    url: '/torrent/upload',
+    method: 'post',
+    data: formData,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 获取分类列表
+ * @returns {Promise}
+ */
+export function getCategories() {
+    console.log('调用获取分类列表API（使用假数据）...')
+    
+    // 由于后端分类API还没实现，返回模拟数据
+    return new Promise((resolve) => {
+      setTimeout(() => {
+        const categories = [
+          { id: 1, name: '操作系统', slug: 'os', icon: 'computer' },
+          { id: 2, name: '软件应用', slug: 'software', icon: 'application' },
+          { id: 3, name: '游戏', slug: 'games', icon: 'game' },
+          { id: 4, name: '影音娱乐', slug: 'media', icon: 'video' },
+          { id: 5, name: '开发工具', slug: 'dev-tools', icon: 'code' },
+          { id: 6, name: '学习资料', slug: 'education', icon: 'book' },
+          { id: 7, name: '移动应用', slug: 'mobile', icon: 'mobile' },
+          { id: 8, name: '服务器软件', slug: 'server', icon: 'server' },
+          { id: 9, name: '安全工具', slug: 'security', icon: 'shield' },
+          { id: 10, name: '其他', slug: 'others', icon: 'folder' }
+        ]
+        
+        console.log('分类列表模拟数据加载成功:', categories)
+        resolve({ data: categories })
+      }, 200) // 模拟网络延迟
+    })
+  }
+
+/**
+ * 获取标签列表
+ * @returns {Promise}
+ * 暂时还没有获取标签的列表
+ */
+export function getTags() {
+    console.log('调用获取标签列表API...')
+    // 由于后端没有标签的Controller，返回模拟数据
+    return new Promise((resolve) => {
+      setTimeout(() => {
+        resolve({
+          data: [
+            { id: 1, name: 'linux' },
+            { id: 2, name: 'ubuntu' },
+            { id: 3, name: 'debian' },
+            { id: 4, name: 'windows' },
+            { id: 5, name: 'macos' },
+            { id: 6, name: 'centos' },
+            { id: 7, name: 'redhat' },
+            { id: 8, name: 'android' },
+            { id: 9, name: 'ios' },
+            { id: 10, name: 'server' },
+            { id: 11, name: 'desktop' }
+          ]
+        })
+      }, 100)
+    })
+  }
+
+/**
+ * 获取种子详情
+ * @param {string} infoHash - 种子的info hash
+ * @returns {Promise}
+ */
+export function getTorrentDetail(infoHash) {
+  return request({
+    url: `/api/torrent/${infoHash}`,
+    method: 'get'
+  })
+}
+
+/**
+ * 获取种子列表
+ * @param {Object} params - 查询参数
+ * @returns {Promise}
+ */
+export function getTorrents(params) {
+  return request({
+    url: '/api/torrents',
+    method: 'get',
+    params
+  })
+}
\ No newline at end of file
diff --git a/src/views/torrent/UploadView.vue b/src/views/torrent/UploadView.vue
index 80c3660..6b15432 100644
--- a/src/views/torrent/UploadView.vue
+++ b/src/views/torrent/UploadView.vue
@@ -1,176 +1,96 @@
 <template>
   <div class="upload-page">
-    <div class="page-header">
-      <h1>上传种子</h1>
-      <p class="page-description">分享你的资源，为社区做贡献</p>
-    </div>
-
-    <div class="upload-form">
+    <div class="upload-container">
+      <h2>上传种子</h2>
+      
       <el-form
         ref="uploadFormRef"
         :model="uploadForm"
-        :rules="formRules"
+        :rules="uploadRules"
         label-width="120px"
-        size="large"
+        class="upload-form"
       >
         <!-- 种子文件上传 -->
-        <el-form-item label="种子文件" prop="torrentFile" required>
+        <el-form-item label="种子文件" prop="file">
           <el-upload
-            ref="torrentUploadRef"
+            ref="uploadRef"
             :auto-upload="false"
             :limit="1"
             accept=".torrent"
             :on-change="handleTorrentChange"
             :on-remove="handleTorrentRemove"
-            :before-upload="beforeTorrentUpload"
-            drag
-            class="torrent-upload"
+            :file-list="fileList"
           >
-            <el-icon class="el-icon--upload"><UploadFilled /></el-icon>
-            <div class="el-upload__text">
-              将 .torrent 文件拖到此处，或<em>点击上传</em>
-            </div>
+            <template #trigger>
+              <el-button type="primary">选择文件</el-button>
+            </template>
             <template #tip>
               <div class="el-upload__tip">
-                只能上传 .torrent 文件，且不超过 10MB
+                只能上传 .torrent 文件
               </div>
             </template>
           </el-upload>
         </el-form-item>
 
         <!-- 基本信息 -->
-        <el-form-item label="资源标题" prop="title" required>
-          <el-input
-            v-model="uploadForm.title"
-            placeholder="请输入资源标题"
-            maxlength="200"
-            show-word-limit
-          />
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="uploadForm.title" placeholder="请输入种子标题" />
         </el-form-item>
 
-        <el-form-item label="资源分类" prop="category" required>
+        <el-form-item label="副标题" prop="subtitle">
+          <el-input v-model="uploadForm.subtitle" placeholder="请输入副标题（可选）" />
+        </el-form-item>
+
+        <el-form-item label="分类" prop="category">
           <el-select v-model="uploadForm.category" placeholder="请选择分类">
-            <el-option label="电影" value="movie" />
-            <el-option label="电视剧" value="tv" />
-            <el-option label="音乐" value="music" />
-            <el-option label="软件" value="software" />
-            <el-option label="游戏" value="game" />
-            <el-option label="电子书" value="ebook" />
-            <el-option label="其他" value="other" />
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="子分类" prop="subcategory">
-          <el-select v-model="uploadForm.subcategory" placeholder="请选择子分类">
             <el-option
-              v-for="sub in getSubcategories(uploadForm.category)"
-              :key="sub.value"
-              :label="sub.label"
-              :value="sub.value"
+              v-for="category in categories"
+              :key="category.id"
+              :label="category.name"
+              :value="category.slug"
             />
           </el-select>
         </el-form-item>
 
-        <!-- 详细描述 -->
-        <el-form-item label="资源描述" prop="description">
+        <!-- 标签 -->
+        <el-form-item label="标签" prop="tag">
+          <el-select 
+            v-model="uploadForm.tag" 
+            multiple 
+            filterable 
+            allow-create 
+            placeholder="请选择或输入标签"
+          >
+            <el-option
+              v-for="tag in availableTags"
+              :key="tag.id"
+              :label="tag.name"
+              :value="tag.name"
+            />
+          </el-select>
+        </el-form-item>
+
+        <!-- 描述信息 -->
+        <el-form-item label="描述" prop="description">
           <el-input
             v-model="uploadForm.description"
             type="textarea"
             :rows="6"
-            placeholder="请详细描述资源内容，包括格式、质量、语言等信息"
-            maxlength="2000"
-            show-word-limit
+            placeholder="请输入种子描述，支持 Markdown 格式"
           />
         </el-form-item>
 
-        <!-- 标签 -->
-        <el-form-item label="标签">
-          <div class="tags-input">
-            <el-tag
-              v-for="tag in uploadForm.tags"
-              :key="tag"
-              closable
-              @close="removeTag(tag)"
-              class="tag-item"
-            >
-              {{ tag }}
-            </el-tag>
-            <el-input
-              v-if="tagInputVisible"
-              ref="tagInputRef"
-              v-model="tagInputValue"
-              size="small"
-              @keyup.enter="addTag"
-              @blur="addTag"
-              class="tag-input"
-            />
-            <el-button
-              v-else
-              size="small"
-              @click="showTagInput"
-              class="add-tag-btn"
-            >
-              + 添加标签
-            </el-button>
-          </div>
-        </el-form-item>
-
-        <!-- 封面图片 -->
-        <el-form-item label="封面图片">
-          <el-upload
-            ref="imageUploadRef"
-            :auto-upload="false"
-            :limit="1"
-            accept="image/*"
-            :on-change="handleImageChange"
-            :on-remove="handleImageRemove"
-            list-type="picture-card"
-            class="image-upload"
-          >
-            <el-icon><Plus /></el-icon>
-            <template #tip>
-              <div class="el-upload__tip">
-                支持 JPG、PNG 格式，建议尺寸 300x400，不超过 5MB
-              </div>
-            </template>
-          </el-upload>
-        </el-form-item>
-
-        <!-- 高级选项 -->
+        <!-- 匿名发布 -->
         <el-form-item>
-          <el-collapse>
-            <el-collapse-item title="高级选项" name="advanced">
-              <el-form-item label="免费时间">
-                <el-select v-model="uploadForm.freeTime" placeholder="选择免费时间">
-                  <el-option label="永久免费" value="forever" />
-                  <el-option label="24小时" value="24h" />
-                  <el-option label="48小时" value="48h" />
-                  <el-option label="7天" value="7d" />
-                  <el-option label="30天" value="30d" />
-                </el-select>
-              </el-form-item>
-
-              <el-form-item label="匿名上传">
-                <el-switch v-model="uploadForm.anonymous" />
-                <span class="form-tip">开启后将不显示上传者信息</span>
-              </el-form-item>
-
-              <el-form-item label="允许HR">
-                <el-switch v-model="uploadForm.allowHR" />
-                <span class="form-tip">允许此种子参与HR考核</span>
-              </el-form-item>
-            </el-collapse-item>
-          </el-collapse>
+          <el-checkbox v-model="uploadForm.anonymous">匿名发布</el-checkbox>
         </el-form-item>
 
         <!-- 提交按钮 -->
         <el-form-item>
-          <div class="submit-buttons">
-            <el-button @click="resetForm">重置</el-button>
-            <el-button type="primary" @click="submitForm" :loading="uploading">
-              {{ uploading ? '上传中...' : '提交种子' }}
-            </el-button>
-          </div>
+          <el-button type="primary" @click="submitUpload" :loading="uploading">
+            上传种子
+          </el-button>
+          <el-button @click="resetForm">重置表单</el-button>
         </el-form-item>
       </el-form>
     </div>
@@ -178,217 +98,211 @@
 </template>
 
 <script>
-import { ref, reactive, nextTick } from 'vue'
+import { ref, reactive, onMounted } from 'vue'
 import { useRouter } from 'vue-router'
 import { ElMessage } from 'element-plus'
-import {
-  UploadFilled,
-  Plus
-} from '@element-plus/icons-vue'
+import { uploadTorrent, getCategories, getTags } from '@/api/torrent'
 
 export default {
   name: 'UploadView',
   setup() {
     const router = useRouter()
     const uploadFormRef = ref(null)
-    const torrentUploadRef = ref(null)
-    const imageUploadRef = ref(null)
-    const tagInputRef = ref(null)
-    
+    const uploadRef = ref(null)
     const uploading = ref(false)
-    const tagInputVisible = ref(false)
-    const tagInputValue = ref('')
-    
+    const fileList = ref([])
+
     const uploadForm = reactive({
-      torrentFile: null,
       title: '',
+      subtitle: '',
       category: '',
-      subcategory: '',
+      tag: [],
       description: '',
-      tags: [],
-      coverImage: null,
-      freeTime: '',
       anonymous: false,
-      allowHR: true
+      file: null
     })
-    
-    const formRules = {
+
+    const uploadRules = {
       title: [
-        { required: true, message: '请输入资源标题', trigger: 'blur' },
-        { min: 5, max: 200, message: '标题长度在 5 到 200 个字符', trigger: 'blur' }
+        { required: true, message: '请输入种子标题', trigger: 'blur' },
+        { min: 3, max: 100, message: '标题长度应在 3 到 100 个字符之间', trigger: 'blur' }
       ],
       category: [
-        { required: true, message: '请选择资源分类', trigger: 'change' }
+        { required: true, message: '请选择分类', trigger: 'change' }
       ],
       description: [
-        { min: 10, max: 2000, message: '描述长度在 10 到 2000 个字符', trigger: 'blur' }
+        { required: true, message: '请输入种子描述', trigger: 'blur' },
+        { min: 10, message: '描述至少需要 10 个字符', trigger: 'blur' }
+      ],
+      file: [
+        { required: true, message: '请上传种子文件', trigger: 'change' }
       ]
     }
-    
-    const subcategories = {
-      movie: [
-        { label: '动作片', value: 'action' },
-        { label: '喜剧片', value: 'comedy' },
-        { label: '科幻片', value: 'scifi' },
-        { label: '恐怖片', value: 'horror' },
-        { label: '剧情片', value: 'drama' }
-      ],
-      tv: [
-        { label: '美剧', value: 'us' },
-        { label: '国产剧', value: 'cn' },
-        { label: '日韩剧', value: 'asia' },
-        { label: '英剧', value: 'uk' },
-        { label: '纪录片', value: 'documentary' }
-      ],
-      music: [
-        { label: '流行音乐', value: 'pop' },
-        { label: '古典音乐', value: 'classical' },
-        { label: '摇滚音乐', value: 'rock' },
-        { label: '电子音乐', value: 'electronic' },
-        { label: '其他', value: 'other' }
-      ],
-      software: [
-        { label: '操作系统', value: 'os' },
-        { label: '办公软件', value: 'office' },
-        { label: '开发工具', value: 'dev' },
-        { label: '设计软件', value: 'design' },
-        { label: '其他', value: 'other' }
-      ],
-      game: [
-        { label: 'PC游戏', value: 'pc' },
-        { label: '主机游戏', value: 'console' },
-        { label: '手机游戏', value: 'mobile' },
-        { label: '其他', value: 'other' }
-      ]
+
+    const categories = ref([])
+    const availableTags = ref([])
+
+    // 获取分类列表
+    const loadCategories = async () => {
+      try {
+        console.log('开始加载分类列表...')
+        console.log('当前token:', localStorage.getItem('token'))
+        const response = await getCategories()
+        console.log('分类列表响应:', response)
+        
+        if (response && response.data) {
+          categories.value = response.data
+          console.log('分类列表加载成功:', categories.value)
+        } else {
+          console.warn('分类列表数据为空')
+          categories.value = []
+        }
+      } catch (error) {
+        console.error('Failed to load categories:', error)
+        console.error('错误详情:', {
+          message: error.message,
+          response: error.response?.data,
+          status: error.response?.status,
+          config: error.config
+        })
+        
+        // 根据错误类型显示不同的提示
+        if (error.response?.status === 401) {
+          ElMessage.error('请先登录')
+          router.push('/login')
+        } else if (error.response?.status === 403) {
+          ElMessage.error('没有权限访问分类列表')
+        } else if (error.code === 'ERR_NETWORK') {
+          ElMessage.error('无法连接到服务器，请检查后端服务是否启动')
+        } else {
+          ElMessage.error(`获取分类列表失败: ${error.message}`)
+        }
+      }
     }
-    
-    const getSubcategories = (category) => {
-      return subcategories[category] || []
+
+    // 获取标签列表
+    const loadTags = async () => {
+      try {
+        console.log('开始加载标签列表...')
+        const response = await getTags()
+        console.log('标签列表响应:', response)
+        
+        if (response && response.data) {
+          availableTags.value = response.data
+          console.log('标签列表加载成功:', availableTags.value)
+        } else {
+          console.warn('标签列表数据为空')
+          availableTags.value = []
+        }
+      } catch (error) {
+        console.error('Failed to load tags:', error)
+        console.error('错误详情:', {
+          message: error.message,
+          response: error.response?.data,
+          status: error.response?.status
+        })
+        
+        // 如果是网络错误，提供更详细的提示
+        if (error.code === 'ERR_NETWORK') {
+          ElMessage.error('无法连接到服务器，请检查后端服务是否启动')
+        } else {
+          ElMessage.error(`获取标签列表失败: ${error.message}`)
+        }
+      }
     }
-    
+
     const handleTorrentChange = (file) => {
-      uploadForm.torrentFile = file.raw
-      // 这里可以解析torrent文件获取基本信息
-      parseTorrentFile(file.raw)
+      if (file) {
+        uploadForm.file = file.raw
+        fileList.value = [file]
+        
+        // 自动校验文件字段
+        uploadFormRef.value?.validateField('file')
+      }
     }
-    
+
     const handleTorrentRemove = () => {
-      uploadForm.torrentFile = null
+      uploadForm.file = null
+      fileList.value = []
     }
-    
-    const beforeTorrentUpload = (file) => {
-      const isTorrent = file.type === 'application/x-bittorrent' || file.name.endsWith('.torrent')
-      const isLt10M = file.size / 1024 / 1024 < 10
-      
-      if (!isTorrent) {
-        ElMessage.error('只能上传 .torrent 文件!')
-        return false
-      }
-      if (!isLt10M) {
-        ElMessage.error('种子文件大小不能超过 10MB!')
-        return false
-      }
-      return true
-    }
-    
-    const parseTorrentFile = (file) => {
-      // 这里应该实现torrent文件解析
-      // 可以使用 parse-torrent 库
-      console.log('解析种子文件:', file.name)
-      
-      // 模拟解析结果自动填入表单
-      if (!uploadForm.title) {
-        uploadForm.title = file.name.replace('.torrent', '')
-      }
-    }
-    
-    const handleImageChange = (file) => {
-      uploadForm.coverImage = file.raw
-    }
-    
-    const handleImageRemove = () => {
-      uploadForm.coverImage = null
-    }
-    
-    const showTagInput = () => {
-      tagInputVisible.value = true
-      nextTick(() => {
-        tagInputRef.value?.focus()
-      })
-    }
-    
-    const addTag = () => {
-      const tag = tagInputValue.value.trim()
-      if (tag && !uploadForm.tags.includes(tag)) {
-        uploadForm.tags.push(tag)
-      }
-      tagInputVisible.value = false
-      tagInputValue.value = ''
-    }
-    
-    const removeTag = (tag) => {
-      const index = uploadForm.tags.indexOf(tag)
-      if (index > -1) {
-        uploadForm.tags.splice(index, 1)
-      }
-    }
-    
-    const submitForm = async () => {
-      if (!uploadForm.torrentFile) {
-        ElMessage.error('请上传种子文件')
+
+    const submitUpload = async () => {
+      if (!uploadForm.file) {
+        ElMessage.warning('请先选择种子文件')
         return
       }
-      
+
       try {
         await uploadFormRef.value?.validate()
         
         uploading.value = true
+        const formData = new FormData()
+        formData.append('file', uploadForm.file)
+        formData.append('title', uploadForm.title)
+        formData.append('subtitle', uploadForm.subtitle || '')
+        formData.append('category', uploadForm.category)
+        formData.append('description', uploadForm.description)
+        formData.append('anonymous', uploadForm.anonymous)
         
-        // 模拟上传过程
-        await new Promise(resolve => setTimeout(resolve, 2000))
+        // 处理标签数组
+        if (uploadForm.tag && uploadForm.tag.length > 0) {
+          uploadForm.tag.forEach(tag => {
+            formData.append('tag', tag)
+          })
+        }
+
+        const response = await uploadTorrent(formData)
         
-        ElMessage.success('种子上传成功!')
-        router.push('/torrents')
-        
+        ElMessage.success('种子上传成功')
+        // 根据后端返回的数据跳转到种子详情页
+        if (response.data && response.data.infoHash) {
+          router.push(`/torrent/${response.data.infoHash}`)
+        } else {
+          router.push('/torrents') // 或者跳转到种子列表页
+        }
       } catch (error) {
-        console.error('表单验证失败:', error)
+        console.error('Failed to upload torrent:', error)
+        
+        // 根据后端返回的错误信息显示不同的提示
+        let errorMessage = '种子上传失败'
+        if (error.response?.data?.message) {
+          errorMessage = error.response.data.message
+        } else if (error.response?.data?.error) {
+          errorMessage = error.response.data.error
+        }
+        
+        ElMessage.error(errorMessage)
       } finally {
         uploading.value = false
       }
     }
-    
+
     const resetForm = () => {
       uploadFormRef.value?.resetFields()
-      uploadForm.torrentFile = null
-      uploadForm.coverImage = null
-      uploadForm.tags = []
-      torrentUploadRef.value?.clearFiles()
-      imageUploadRef.value?.clearFiles()
+      uploadRef.value?.clearFiles()
+      uploadForm.file = null
+      fileList.value = []
     }
-    
+
+    // 组件挂载时加载数据
+    onMounted(() => {
+      loadCategories()
+      loadTags()
+    })
+
     return {
       uploadFormRef,
-      torrentUploadRef,
-      imageUploadRef,
-      tagInputRef,
+      uploadRef,
       uploading,
-      tagInputVisible,
-      tagInputValue,
       uploadForm,
-      formRules,
-      getSubcategories,
+      uploadRules,
+      categories,
+      availableTags,
+      fileList,
       handleTorrentChange,
       handleTorrentRemove,
-      beforeTorrentUpload,
-      handleImageChange,
-      handleImageRemove,
-      showTagInput,
-      addTag,
-      removeTag,
-      submitForm,
-      resetForm,
-      UploadFilled,
-      Plus
+      submitUpload,
+      resetForm
     }
   }
 }
@@ -401,106 +315,50 @@
   padding: 24px;
 }
 
-.page-header {
-  text-align: center;
-  margin-bottom: 32px;
-  
-  h1 {
-    font-size: 28px;
-    font-weight: 600;
+.upload-container {
+  background: #fff;
+  border-radius: 8px;
+  padding: 24px;
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
+
+  h2 {
+    margin: 0 0 24px;
+    padding-bottom: 16px;
+    border-bottom: 1px solid #eee;
     color: #2c3e50;
-    margin: 0 0 8px 0;
-  }
-  
-  .page-description {
-    font-size: 16px;
-    color: #7f8c8d;
-    margin: 0;
   }
 }
 
 .upload-form {
-  background: #fff;
-  border-radius: 12px;
-  padding: 32px;
-  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
-  
-  .torrent-upload {
+  .el-upload {
     width: 100%;
-    
-    :deep(.el-upload-dragger) {
-      width: 100%;
-      height: 180px;
-      border: 2px dashed #d9d9d9;
-      border-radius: 8px;
-      
-      &:hover {
-        border-color: #409eff;
-      }
-    }
   }
-  
-  .tags-input {
-    display: flex;
-    flex-wrap: wrap;
-    gap: 8px;
-    align-items: center;
-    
-    .tag-item {
-      margin: 0;
-    }
-    
-    .tag-input {
-      width: 100px;
-    }
-    
-    .add-tag-btn {
-      border: 1px dashed #d9d9d9;
-      color: #999;
-      
-      &:hover {
-        border-color: #409eff;
-        color: #409eff;
-      }
-    }
-  }
-  
-  .image-upload {
-    :deep(.el-upload--picture-card) {
-      width: 148px;
-      height: 148px;
-    }
-  }
-  
-  .form-tip {
-    margin-left: 8px;
-    font-size: 12px;
+
+  .el-upload__tip {
+    line-height: 1.2;
+    padding: 8px 0;
     color: #909399;
   }
-  
-  .submit-buttons {
-    display: flex;
-    gap: 16px;
-    justify-content: center;
-    margin-top: 24px;
-  }
 }
 
 @media (max-width: 768px) {
   .upload-page {
     padding: 16px;
   }
-  
-  .upload-form {
-    padding: 24px 16px;
+
+  .upload-container {
+    padding: 16px;
   }
-  
-  .submit-buttons {
-    flex-direction: column;
-    
-    .el-button {
-      width: 100%;
-    }
+
+  :deep(.el-form-item__label) {
+    float: none;
+    display: block;
+    text-align: left;
+    padding: 0 0 8px;
+  }
+
+  :deep(.el-form-item__content) {
+    margin-left: 0 !important;
   }
 }
 </style>
\ No newline at end of file
