blob: 4b232858051425ec54a06c640dc6ae7dc63960f5 [file] [log] [blame]
9563036699e95ae32025-06-02 21:42:11 +08001import React, { useState } from 'react';
2import './App.css';
3import './PublishPage.css';
4
5const PublishPage = () => {
6 const [formData, setFormData] = useState({
7 type: '',
8 torrentFile: '',
9 title: '',
10 subtitle: ''
11 });
12
13 const handleChange = (e) => {
14 const { name, value } = e.target;
15 setFormData({ ...formData, [name]: value });
16 };
17
18 const handleFileChange = (e) => {
19 const file = e.target.files[0];
20 if (file && file.name.split('.').pop() !== 'torrent') {
21 alert('仅能上传.torrent类型文件');
22 e.target.value = null; // Clear the input
23 } else {
24 setFormData({ ...formData, torrentFile: file });
25 }
26 };
27
956303669fa908b12025-06-03 13:42:32 +080028 const handleSubmit = async (e) => {
9563036699e95ae32025-06-02 21:42:11 +080029 e.preventDefault();
956303669fa908b12025-06-03 13:42:32 +080030 // 假设userid和tag可以从表单或用户信息中获取,这里用示例数据
31 const userid = '123456';
32 const tag = formData.type ? formData.type : '高清';
33 if (!formData.torrentFile) {
34 alert('请上传.torrent文件');
35 return;
36 }
37 const data = new FormData();
38 data.append('userid', userid);
39 data.append('title', formData.title);
40 data.append('tag', tag);
41 data.append('file', formData.torrentFile);
42
43 try {
44 const response = await fetch('http://192.168.5.9:8080/api/save-torrent', {
45 method: 'POST',
46 body: data,
47 });
48 if (response.ok) {
49 alert('上传成功!');
50 } else {
51 alert('上传失败');
52 }
53 } catch (err) {
54 alert('网络错误');
55 }
9563036699e95ae32025-06-02 21:42:11 +080056 };
57
58 return (
59 <div className="publish-page">
60 <h1 className="page-title">发布种子</h1>
61 <form onSubmit={handleSubmit} className="publish-form">
62 <div className="form-row">
63 <label htmlFor="type">类型</label>
64 <select name="type" id="type" value={formData.type} onChange={handleChange} required>
65 <option value="">请选择类型</option>
66 <option value="电影">电影</option>
67 <option value="剧集">剧集</option>
68 <option value="音乐">音乐</option>
69 <option value="动漫">动漫</option>
70 <option value="游戏">游戏</option>
71 <option value="体育">体育</option>
72 <option value="资料">资料</option>
73 </select>
74 </div>
75
76 <div className="form-row">
77 <label htmlFor="torrentFile">种子文件</label>
78 <input
79 type="file"
80 id="torrentFile"
81 name="torrentFile"
82 onChange={handleFileChange}
83 required
84 />
85 <span style={{ fontSize: '12px', color: '#666' }}>需上传.torrent类型文件</span>
86 </div>
87
88 <div className="form-row">
89 <label htmlFor="title">标题</label>
90 <input
91 type="text"
92 id="title"
93 name="title"
94 value={formData.title}
95 onChange={handleChange}
96 required
97 />
98 </div>
99
100 <div className="form-row">
101 <label htmlFor="subtitle">副标题</label>
102 <input
103 type="text"
104 id="subtitle"
105 name="subtitle"
106 value={formData.subtitle}
107 onChange={handleChange}
108 />
109 </div>
110
111 <div className="form-row submit-row">
112 <button type="submit" className="submit-button">提交</button>
113 </div>
114 </form>
115 </div>
116 );
117};
118
119export default PublishPage;