Skip to content

Commit 9a77af5

Browse files
committedSep 17, 2024·
⌚️20240918005723
1 parent 89e662c commit 9a77af5

File tree

3 files changed

+47
-12
lines changed

3 files changed

+47
-12
lines changed
 

‎README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
### Demo
77

8-
[https://aimg.pages.dev/](https://aimg.pages.dev/)
8+
[https://img.131213.xyz](https://img.131213.xyz)
99

1010
### 测试
1111
[https://telegraph-image-e49.pages.dev/](https://telegraph-image-e49.pages.dev/)
@@ -71,8 +71,8 @@
7171
|PROXYALLIMG | 反向代理所有图片(默认为false)| boolean |
7272
|BASIC_USER | 后台管理页面登录用户名称| string |
7373
|BASIC_PASS | 后台管理页面登录用户密码| string |
74-
|ENABLE_AUTH_API | 是否开启tg channel访客验证 (默认为false)| boolean |
75-
|REGULAR_USER | 普通用户 (tg channel访客验证| string |
74+
|ENABLE_AUTH_API | 是否开启访客验证 (默认为false)| boolean |
75+
|REGULAR_USER | 普通用户 (访客验证| string |
7676
|REGULAR_PASS | 普通用户密码| string |
7777
|ModerateContentApiKey | 审查图像内容的API key| string |
7878
|RATINGAPI | [自建的鉴黄api](https://github.com/x-dr/nsfwjs-api) | string |

‎docs/manage.md

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11

2-
#### 后台管理不是很完善 但基本的应该都有了
32

43
1. 创建D1数据库 如图
54

‎src/app/page.js

+44-8
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ export default function Home() {
2626
const [selectedFiles, setSelectedFiles] = useState([]);
2727
const [uploadedImages, setUploadedImages] = useState([]);
2828
const [uploadedFilesNum, setUploadedFilesNum] = useState(0);
29-
const [selectedImage, setSelectedImage] = useState(null);
29+
const [selectedImage, setSelectedImage] = useState(null); // 添加状态用于跟踪选中的放大图片
3030
const [activeTab, setActiveTab] = useState('preview');
3131
const [uploading, setUploading] = useState(false);
3232
const [IP, setIP] = useState('');
3333
const [Total, setTotal] = useState('?');
3434
const [selectedOption, setSelectedOption] = useState('tgchannel'); // 初始选择第一个选项
35-
const [isAuthapi, setisAuthapi] = useState(false);
36-
const [Loginuser, setLoginuser] = useState('');
35+
const [isAuthapi, setisAuthapi] = useState(false); // 初始选择第一个选项
36+
const [Loginuser, setLoginuser] = useState(''); // 初始选择第一个选项
3737
const [boxType, setBoxtype] = useState("img");
3838

3939
const origin = typeof window !== 'undefined' ? window.location.origin : '';
@@ -129,6 +129,7 @@ export default function Home() {
129129
const newFiles = event.target.files;
130130
const filteredFiles = Array.from(newFiles).filter(file =>
131131
!selectedFiles.find(selFile => selFile.name === file.name));
132+
// 过滤掉已经在 uploadedImages 数组中存在的文件
132133
const uniqueFiles = filteredFiles.filter(file =>
133134
!uploadedImages.find(upImg => upImg.name === file.name)
134135
);
@@ -170,10 +171,11 @@ export default function Home() {
170171
formData.append(formFieldName, file);
171172

172173
try {
173-
const targetUrl = selectedOption === "tgchannel"
174+
const targetUrl = selectedOption === "tgchannel" || selectedOption === "r2"
174175
? `/api/enableauthapi/${selectedOption}`
175176
: `/api/${selectedOption}`;
176177

178+
// const response = await fetch("https://img.131213.xyz/api/tencent", {
177179
const response = await fetch(targetUrl, {
178180
method: 'POST',
179181
body: formData,
@@ -190,10 +192,37 @@ export default function Home() {
190192
setUploadedImages((prevImages) => [...prevImages, file]);
191193
setSelectedFiles((prevFiles) => prevFiles.filter(f => f !== file));
192194
successCount++;
193-
} else if (response.status === 401) {
194-
toast.error(' 未授权,请登录 !');
195195
} else {
196-
toast.error(`上传 ${file.name} 图片时出错`);
196+
// 尝试从响应中提取错误信息
197+
let errorMsg;
198+
try {
199+
const errorData = await response.json();
200+
errorMsg = errorData.message || `上传 ${file.name} 图片时出错`;
201+
} catch (jsonError) {
202+
// 如果解析 JSON 失败,使用默认错误信息
203+
errorMsg = `上传 ${file.name} 图片时发生未知错误`;
204+
}
205+
206+
// 细化状态码处理
207+
switch (response.status) {
208+
case 400:
209+
toast.error(`请求无效: ${errorMsg}`);
210+
break;
211+
case 403:
212+
toast.error(`无权限访问资源: ${errorMsg}`);
213+
break;
214+
case 404:
215+
toast.error(`资源未找到: ${errorMsg}`);
216+
break;
217+
case 500:
218+
toast.error(`服务器错误: ${errorMsg}`);
219+
break;
220+
case 401:
221+
toast.error(`未授权: ${errorMsg}`);
222+
break;
223+
default:
224+
toast.error(`上传 ${file.name} 图片时出错: ${errorMsg}`);
225+
}
197226
}
198227
} catch (error) {
199228
toast.error(`上传 ${file.name} 图片时出错`);
@@ -460,9 +489,11 @@ export default function Home() {
460489
{renderButton()}
461490
</header>
462491
<div className="mt-[60px] w-9/10 sm:w-9/10 md:w-9/10 lg:w-9/10 xl:w-3/5 2xl:w-2/3">
492+
463493
<div className="flex flex-row">
464494
<div className="flex flex-col">
465-
<div className="text-gray-800 text-lg">图片或视频上传</div>
495+
<div className="text-gray-800 text-lg">图片或视频上传
496+
</div>
466497
<div className="mb-4 text-sm text-gray-500">
467498
上传文件最大 5 MB;本站已托管 <span className="text-cyan-600">{Total}</span> 张图片; 你访问本站的IP是:<span className="text-cyan-600">{IP}</span>
468499
</div>
@@ -475,6 +506,7 @@ export default function Home() {
475506
className="text-lg p-2 border rounded text-center w-auto sm:w-auto md:w-auto lg:w-auto xl:w-auto 2xl:w-36">
476507
<option value="tg" >TG(会失效)</option>
477508
<option value="tgchannel">TG_Channel</option>
509+
<option value="r2">R2</option>
478510
<option value="vviptuangou">vviptuangou</option>
479511
<option value="58img">58img</option>
480512
<option value="tencent">tencent</option>
@@ -543,7 +575,9 @@ export default function Home() {
543575

544576
{selectedFiles.length === 0 && (
545577
<div className="absolute -z-10 left-0 top-0 w-full h-full flex items-center justify-center">
578+
546579
<div className="text-gray-500">
580+
547581
拖拽文件到这里或将屏幕截图复制并粘贴到此处上传
548582
</div>
549583
</div>
@@ -585,6 +619,8 @@ export default function Home() {
585619
<div className="md:col-span-1 col-span-5">
586620
<div
587621
className={`w-full bg-green-500 cursor-pointer h-10 flex items-center justify-center text-white ${uploading ? 'pointer-events-none opacity-50' : ''}`}
622+
// className={`bg-green-500 text-white rounded-full w-6 h-6 flex items-center justify-center cursor-pointer mx-2 ${uploading ? 'pointer-events-none opacity-50' : ''}`}
623+
588624
onClick={() => handleUpload()}
589625
>
590626
<FontAwesomeIcon icon={faUpload} style={{ width: '20px', height: '20px' }} className="mr-2" />

0 commit comments

Comments
 (0)
Please sign in to comment.