用户资料接口添加
Change-Id: Id55e7fef307ec1663bb7a05cfbf7f81e097ac767
diff --git a/front/src/TorrentDetailPage.js b/front/src/TorrentDetailPage.js
index a23dce7..8d3ee43 100644
--- a/front/src/TorrentDetailPage.js
+++ b/front/src/TorrentDetailPage.js
@@ -4,14 +4,81 @@
export default function TorrentDetailPage() {
const { torrentId } = useParams();
+ const [detail, setDetail] = React.useState(null);
+ const [loading, setLoading] = React.useState(true);
+ const [error, setError] = React.useState(null);
+ // 假设你从某个地方获取了 userId(例如登录状态、localStorage 等)
+ const [userId] = React.useState('user1550e8400-e29b-41d4-a716-44665544000023'); // 替换为实际的用户 ID
+
+ const handleClick = () => {
+ // 构造下载 URL,包含 userId 和 torrentId 参数
+ console.log(torrentId)
+ const downloadUrl = `http://192.168.5.9:8080/api/get-torrent?userId=${encodeURIComponent(userId)}&torrentId=${encodeURIComponent(torrentId)}`;
+
+ // 发起 GET 请求下载文件
+ fetch(downloadUrl)
+ .then(response => {
+ if (!response.ok) {
+ throw new Error('下载失败');
+ }
+ return response.blob();
+ })
+ .then(blob => {
+ // 创建下载链接并触发下载
+ const url = window.URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.href = url;
+ a.download = `torrent-${torrentId}.torrent`;
+ document.body.appendChild(a);
+ a.click();
+ window.URL.revokeObjectURL(url);
+ document.body.removeChild(a);
+ })
+ .catch(error => {
+ console.error('下载错误:', error);
+ alert('下载失败: ' + error.message);
+ });
+ };
+
+ React.useEffect(() => {
+ setLoading(true);
+ setError(null);
+ fetch(`http://192.168.5.9:8080/api/torrent-detail?id=${encodeURIComponent(torrentId)}`)
+ .then(res => {
+ if (!res.ok) throw new Error('网络错误');
+ return res.json();
+ })
+ .then(data => {
+ setDetail(data);
+ setLoading(false);
+ })
+ .catch(err => {
+ setError(err.message);
+ setLoading(false);
+ });
+ }, [torrentId]);
+
+ if (loading) return <div className="container"><h1>加载中...</h1></div>;
+ if (error) return <div className="container"><h1>加载失败: {error}</h1></div>;
+ if (!detail) return <div className="container"><h1>未找到详情</h1></div>;
return (
<div className="container">
<h1>种子详情页</h1>
- <h2 style={{ fontSize: 'inherit', fontWeight: 'normal', textAlign: 'left' }}>标题: 种子{torrentId}</h2>
- <p style={{ fontSize: 'inherit', textAlign: 'left' }}>简介: 这是种子{torrentId}的详细信息。</p>
+ <h2 style={{ fontSize: 'inherit', fontWeight: 'normal', textAlign: 'left' }}>标题: {detail.title || `种子${torrentId}`}</h2>
+ <p style={{ fontSize: 'inherit', textAlign: 'left' }}>简介: {detail.description || `这是种子${torrentId}的详细信息。`}</p>
<div style={{ textAlign: 'center', marginTop: '20px' }}>
- <button style={{ padding: '10px 20px', fontSize: '16px', cursor: 'pointer', backgroundColor: '#d3f0ff', border: 'none', borderRadius: '4px' }}>
+ <button
+ style={{
+ padding: '10px 20px',
+ fontSize: '16px',
+ cursor: 'pointer',
+ backgroundColor: '#d3f0ff',
+ border: 'none',
+ borderRadius: '4px'
+ }}
+ onClick={handleClick}
+ >
下载
</button>
</div>