blob: 52eb9560bb30ff43ebf6d914daf08cd487fe849e [file] [log] [blame]
import React, { useState } from 'react';
import './App.css';
import './PublishPage.css';
import { API_BASE_URL } from "./config";
const PublishPage = () => {
const [formData, setFormData] = useState({
type: '',
torrentFile: '',
title: '',
subtitle: ''
});
const [subType, setSubType] = useState('');
const typeOptions = {
'电影': ['大陆', '港台', '欧美', '日韩'],
'剧集': ['国产电视剧', '港剧', '欧美剧', '日韩剧'],
'音乐': ['古典音乐', '流行音乐', '摇滚', '电子音乐', '说唱'],
'动漫': ['国创', '日漫', '欧美动漫', '韩漫'],
'游戏': ['PC', '主机', '移动', '掌机', '视频'],
'体育': ['篮球', '足球', '羽毛球', '排球', '电竞'],
'资料': ['出版物', '学习教程', '素材模板', '演讲交流', '日常娱乐'],
};
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 = '550e8400-e29b-41d4-a716-446655440000';
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', subType);
data.append('file', formData.torrentFile);
data.append('subtitle', formData.subtitle);
// data.append('subtype', subType);
// console.log(data.get('tag'));
try {
// console.log(data.get('userid'));
// console.log(data.get('title'));
const response = await fetch(`${API_BASE_URL}/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={e => { handleChange(e); setSubType(''); }} 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>
{formData.type && typeOptions[formData.type] && (
<div className="form-row">
<label htmlFor="subtype">具体类型</label>
<select name="subtype" id="subtype" value={subType} onChange={e => setSubType(e.target.value)} required>
<option value="">请选择具体类型</option>
{typeOptions[formData.type].map(opt => (
<option key={opt} value={opt}>{opt}</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;