diff --git a/front/src/PublishPage.js b/front/src/PublishPage.js
new file mode 100644
index 0000000..4b23285
--- /dev/null
+++ b/front/src/PublishPage.js
@@ -0,0 +1,119 @@
+import React, { useState } from 'react';
+import './App.css';
+import './PublishPage.css';
+
+const PublishPage = () => {
+  const [formData, setFormData] = useState({
+    type: '',
+    torrentFile: '',
+    title: '',
+    subtitle: ''
+  });
+
+  const handleChange = (e) => {
+    const { name, value } = e.target;
+    setFormData({ ...formData, [name]: value });
+  };
+
+  const handleFileChange = (e) => {
+    const file = e.target.files[0];
+    if (file && file.name.split('.').pop() !== 'torrent') {
+      alert('仅能上传.torrent类型文件');
+      e.target.value = null; // Clear the input
+    } else {
+      setFormData({ ...formData, torrentFile: file });
+    }
+  };
+
+  const handleSubmit = async (e) => {
+    e.preventDefault();
+    // 假设userid和tag可以从表单或用户信息中获取，这里用示例数据
+    const userid = '123456';
+    const tag = formData.type ? formData.type : '高清';
+    if (!formData.torrentFile) {
+      alert('请上传.torrent文件');
+      return;
+    }
+    const data = new FormData();
+    data.append('userid', userid);
+    data.append('title', formData.title);
+    data.append('tag', tag);
+    data.append('file', formData.torrentFile);
+
+    try {
+      const response = await fetch('http://192.168.5.9:8080/api/save-torrent', {
+        method: 'POST',
+        body: data,
+      });
+      if (response.ok) {
+        alert('上传成功！');
+      } else {
+        alert('上传失败');
+      }
+    } catch (err) {
+      alert('网络错误');
+    }
+  };
+
+  return (
+    <div className="publish-page">
+      <h1 className="page-title">发布种子</h1>
+      <form onSubmit={handleSubmit} className="publish-form">
+        <div className="form-row">
+          <label htmlFor="type">类型</label>
+          <select name="type" id="type" value={formData.type} onChange={handleChange} required>
+            <option value="">请选择类型</option>
+            <option value="电影">电影</option>
+            <option value="剧集">剧集</option>
+            <option value="音乐">音乐</option>
+            <option value="动漫">动漫</option>
+            <option value="游戏">游戏</option>
+            <option value="体育">体育</option>
+            <option value="资料">资料</option>
+          </select>
+        </div>
+
+        <div className="form-row">
+          <label htmlFor="torrentFile">种子文件</label>
+          <input
+            type="file"
+            id="torrentFile"
+            name="torrentFile"
+            onChange={handleFileChange}
+            required
+          />
+          <span style={{ fontSize: '12px', color: '#666' }}>需上传.torrent类型文件</span>
+        </div>
+
+        <div className="form-row">
+          <label htmlFor="title">标题</label>
+          <input
+            type="text"
+            id="title"
+            name="title"
+            value={formData.title}
+            onChange={handleChange}
+            required
+          />
+        </div>
+
+        <div className="form-row">
+          <label htmlFor="subtitle">副标题</label>
+          <input
+            type="text"
+            id="subtitle"
+            name="subtitle"
+            value={formData.subtitle}
+            onChange={handleChange}
+          />
+        </div>
+
+        <div className="form-row submit-row">
+          <button type="submit" className="submit-button">提交</button>
+        </div>
+      </form>
+    </div>
+  );
+};
+
+export default PublishPage;
\ No newline at end of file
