fix-user-collections
Change-Id: I51af59fc5866095a4d8ef248be7a28b27d9f4f64
diff --git a/src/pages/PublishSeed/PublishSeed.jsx b/src/pages/PublishSeed/PublishSeed.jsx
index 09dcc67..e3be08c 100644
--- a/src/pages/PublishSeed/PublishSeed.jsx
+++ b/src/pages/PublishSeed/PublishSeed.jsx
@@ -1,9 +1,8 @@
import React, { useState } from 'react';
import axios from 'axios';
-import Header from '../../components/Header'; // 导入 Header 组件
-import './PublishSeed.css'
-
-
+import Header from '../../components/Header';
+import './PublishSeed.css';
+import { useUser } from '../../context/UserContext';
const PublishSeed = () => {
const [title, setTitle] = useState('');
@@ -15,6 +14,8 @@
const [message, setMessage] = useState('');
const [isLoading, setIsLoading] = useState(false);
+ const { user } = useUser(); // 从上下文中获取当前登录用户信息
+
const handleTagsChange = (e) => {
setTags(e.target.value.split(',').map(tag => tag.trim()));
};
@@ -28,25 +29,38 @@
setIsLoading(true);
setMessage('');
+ if (!user || !user.id) {
+ setMessage('请先登录');
+ setIsLoading(false);
+ return;
+ }
+
+ if (!file || !file.name.endsWith('.torrent')) {
+ setMessage('请上传一个 .torrent 文件');
+ setIsLoading(false);
+ return;
+ }
+
const formData = new FormData();
+ formData.append('file', file); // 文件字段
formData.append('title', title);
formData.append('description', description);
- formData.append('tags', JSON.stringify(tags)); // Tags as JSON array
formData.append('category', category);
- formData.append('file', file);
- formData.append('image_url', imageUrl);
+ formData.append('imageUrl', imageUrl);
+ formData.append('tags', tags.join(',')); // 后端使用字符串或数组自行处理
+ formData.append('uploader', user.id); // 添加上传者 ID(必须字段)
try {
- const response = await axios.post(`/echo/seeds/upload`, formData, {
+ const response = await axios.post('/seeds/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
});
- if (response.data.status === 'success') {
+ if (response.data.code === 0) {
setMessage('种子上传成功');
} else {
- setMessage('上传失败,请稍后再试');
+ setMessage(response.data.msg || '上传失败,请稍后再试');
}
} catch (error) {
console.error(error);
@@ -58,90 +72,94 @@
return (
<div className="publish-seed-container">
- <Header /> {/* 在这里插入导航栏 */}
+ <Header />
<div className="pub-card">
- {message && <div className="message">{message}</div>}
- <form onSubmit={handleSubmit} encType="multipart/form-data">
- <div className="title-tag">
- <label>标题</label>
- <input
- type="text"
- value={title}
- onChange={(e) => setTitle(e.target.value)}
- required
- />
- </div>
+ {message && <div className="message">{message}</div>}
+ <form onSubmit={handleSubmit} encType="multipart/form-data">
+ <div className="title-tag">
+ <label>标题</label>
+ <input
+ type="text"
+ value={title}
+ onChange={(e) => setTitle(e.target.value)}
+ required
+ />
+ </div>
- <div className="discription">
- <label>描述</label>
- <textarea
- value={description}
- onChange={(e) => setDescription(e.target.value)}
- required
- />
- </div>
+ <div className="discription">
+ <label>描述</label>
+ <textarea
+ value={description}
+ onChange={(e) => setDescription(e.target.value)}
+ required
+ />
+ </div>
- <div className="title-tag">
- <label>标签 (逗号分隔)</label>
- <input
- type="text"
- value={tags.join(', ')}
- onChange={handleTagsChange}
- placeholder="例如:科幻, 动作"
- required
- />
- </div>
+ <div className="title-tag">
+ <label>标签 (逗号分隔)</label>
+ <input
+ type="text"
+ value={tags.join(', ')}
+ onChange={handleTagsChange}
+ placeholder="例如:科幻, 动作"
+ required
+ />
+ </div>
- <div className="pub-categoty">
- <label>分类</label>
- <select
- value={category}
- onChange={(e) => setCategory(e.target.value)}
- required
- >
- <option value="movie">电影</option>
- <option value="tv">电视剧</option>
- <option value="music">音乐</option>
- </select>
- </div>
+ <div className="pub-categoty">
+ <label>分类</label>
+ <select
+ value={category}
+ onChange={(e) => setCategory(e.target.value)}
+ required
+ >
+ <option value="movie">电影</option>
+ <option value="tv">电视剧</option>
+ <option value="music">音乐</option>
+ </select>
+ </div>
- <div className="seed-file">
- <label>种子文件</label>
- <label className="seed-file-label">
+ <div className="seed-file">
+ <label>种子文件</label>
+ <label className="seed-file-label">
点击选择文件
<input
type="file"
+ accept=".torrent"
onChange={handleFileChange}
style={{ display: 'none' }}
/>
- </label>
- </div>
+ </label>
+ {file && <div style={{ marginTop: '5px' }}>{file.name}</div>}
+ </div>
- <div className="form-group">
- <label>封面图URL</label>
- <input
- type="url"
- value={imageUrl}
- onChange={(e) => setImageUrl(e.target.value)}
- placeholder="例如:http://example.com/images/cover.jpg"
- required
- style={{ padding: '1%',
- width: '100%',
- borderRadius: '6px',
- border: '1px solid #e0c4a1',
- backgroundColor: '#fff5f5',
- color: '#5F4437',
- fontSize: '1rem',
- marginBottom: '2%'}}
- />
- </div>
+ <div className="form-group">
+ <label>封面图URL</label>
+ <input
+ type="url"
+ value={imageUrl}
+ onChange={(e) => setImageUrl(e.target.value)}
+ placeholder="例如:http://example.com/images/cover.jpg"
+ required
+ style={{
+ padding: '1%',
+ width: '100%',
+ borderRadius: '6px',
+ border: '1px solid #e0c4a1',
+ backgroundColor: '#fff5f5',
+ color: '#5F4437',
+ fontSize: '1rem',
+ marginBottom: '2%',
+ }}
+ />
+ </div>
- <div className="upload-button">
- <button type="submit" disabled={isLoading}>
- {isLoading ? '正在上传...' : '上传种子'}
- </button>
- </div>
- </form>
+ <div className="upload-button">
+ <button type="submit" disabled={isLoading}>
+ {isLoading ? '正在上传...' : '上传种子'}
+ </button>
+ </div>
+ </form>
</div>
</div>
);