新增种子发布页面接口函数
Change-Id: I193cec2197289e8ff0429d33d56539f23b2b0d31
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