mirror of
https://github.com/MarSeventh/CloudFlare-ImgBed.git
synced 2026-01-31 09:03:19 +08:00
优化部分显示效果;新增页脚自定义传送门;管理端新增一键下载与全选功能
This commit is contained in:
@@ -32,7 +32,7 @@
|
||||
|
||||
免费图片托管解决方案(支持存储绝大多数常见格式的**图片、视频、动图**等),具有**后台管理、图片审查**、**登录鉴权**、**页面自定义**、**多种方式及多文件上传**、**多文件及多格式链接复制**等功能(详见[第2章](#2.Features))。
|
||||
|
||||
此外,拖拽上传的方式**并没有严格限制文件类型**,理论上你可以上传**任何**不超过50MB的文件,但是暂时不会针对图片和视频外的文件进行特殊优化和适配。
|
||||
此外,拖拽上传的方式**并没有严格限制文件类型**,理论上你可以上传**任何**不超过20MB的文件,但是暂时不会针对图片和视频外的文件进行特殊优化和适配。
|
||||
|
||||

|
||||
|
||||
@@ -265,6 +265,7 @@ API格式:
|
||||
| logoUrl | 页内图床Logo | 字符串 | 只支持`字符串`类型,设置为你自定义的图床Logo链接 |
|
||||
| siteTitle | 网站标题 | 字符串 | 只支持`字符串`类型,设置为你自定义的网站标题 |
|
||||
| siteIcon | 网站图标 | 字符串 | 只支持`字符串`类型,设置为你自定义的网站图标链接 |
|
||||
| footerLink | 页脚传送门链接 | 字符串 | 只支持`字符串`类型,设置为你自定义的传送地址(如个人博客链接) |
|
||||
|
||||
> 整体示例:
|
||||
>
|
||||
@@ -347,6 +348,7 @@ API格式:
|
||||
- ~~网站标题和Icon自定义(2024.8.26已完成)~~
|
||||
- ~~背景切换时间自定义(2024.9.11已完成)~~
|
||||
- ~~背景透明度支持自定义(2024.9.12已完成)~~
|
||||
- ~~页脚自定义传送门(2024.10.20已完成)~~
|
||||
5. ~~增加随机图API(2024.7.25已完成)~~
|
||||
6. ~~完善多格式链接展示形式,增加ubb格式链接支持(2024.8.21已完成)~~
|
||||
7. ~~完善登录逻辑,后端增加认证码校验接口(2024.8.21已完成)~~
|
||||
@@ -391,6 +393,7 @@ API格式:
|
||||
- 是否正确配置`TG_BOT_TOKEN`、`TG_CHAT_ID`等环境变量
|
||||
- 是否**正确绑定KV数据库**
|
||||
- 是否更新至**最新版**
|
||||
- 前往issues寻找相似问题
|
||||
|
||||
### 5.4`TG_CHAT_ID`前面有没有`-`
|
||||
|
||||
|
||||
1
css/201.7bac494a.css
Normal file
1
css/201.7bac494a.css
Normal file
File diff suppressed because one or more lines are too long
BIN
css/201.7bac494a.css.gz
Normal file
BIN
css/201.7bac494a.css.gz
Normal file
Binary file not shown.
1
css/551.6134dd08.css
Normal file
1
css/551.6134dd08.css
Normal file
File diff suppressed because one or more lines are too long
BIN
css/551.6134dd08.css.gz
Normal file
BIN
css/551.6134dd08.css.gz
Normal file
Binary file not shown.
1
css/664.8eeb9ad9.css
Normal file
1
css/664.8eeb9ad9.css
Normal file
File diff suppressed because one or more lines are too long
BIN
css/664.8eeb9ad9.css.gz
Normal file
BIN
css/664.8eeb9ad9.css.gz
Normal file
Binary file not shown.
@@ -1 +1 @@
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/logo.png"><title>Sanyue ImgHub</title><script defer="defer" src="/js/app.e91a4edf.js"></script><link href="/css/app.def7ef9b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but sanyue_imghub doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/logo.png"><title>Sanyue ImgHub</title><script defer="defer" src="/js/app.4bcc3eec.js"></script><link href="/css/app.def7ef9b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but sanyue_imghub doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
BIN
index.html.gz
BIN
index.html.gz
Binary file not shown.
2
js/201.e6ea86f9.js
Normal file
2
js/201.e6ea86f9.js
Normal file
File diff suppressed because one or more lines are too long
BIN
js/201.e6ea86f9.js.gz
Normal file
BIN
js/201.e6ea86f9.js.gz
Normal file
Binary file not shown.
1
js/201.e6ea86f9.js.map
Normal file
1
js/201.e6ea86f9.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/201.e6ea86f9.js.map.gz
Normal file
BIN
js/201.e6ea86f9.js.map.gz
Normal file
Binary file not shown.
2
js/551.82eff49e.js
Normal file
2
js/551.82eff49e.js
Normal file
File diff suppressed because one or more lines are too long
BIN
js/551.82eff49e.js.gz
Normal file
BIN
js/551.82eff49e.js.gz
Normal file
Binary file not shown.
1
js/551.82eff49e.js.map
Normal file
1
js/551.82eff49e.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/551.82eff49e.js.map.gz
Normal file
BIN
js/551.82eff49e.js.map.gz
Normal file
Binary file not shown.
2
js/596.3b4a6305.js
Normal file
2
js/596.3b4a6305.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[596],{4318:function(){},2596:function(t,e,a){a.r(e),a.d(e,{default:function(){return y}});var o=a(6023),n=(a(5331),a(8736),a(213),a(5970),a(7009)),i=(a(8450),a(8785),a(4880)),l=(a(7128),a(1450)),d=a(6768),s=a(4232);const r={class:"container"},u={class:"header-content"},c={class:"header-action"},h={class:"main-container"},m={style:{margin:"8px"}},p=["src"];function f(t,e,a,f,b,k){const g=(0,d.g2)("font-awesome-icon"),w=l.R7,y=i.bZ,T=o.o8,F=n.Zq,_=o.Up;return(0,d.uX)(),(0,d.CE)("div",r,[(0,d.bF)(y,null,{default:(0,d.k6)((()=>[(0,d.Lk)("div",u,[e[0]||(e[0]=(0,d.Lk)("span",{class:"title"},"用户管理",-1)),(0,d.Lk)("div",c,[(0,d.bF)(w,{disabled:k.disableTooltip,content:"返回主管理页",placement:"bottom"},{default:(0,d.k6)((()=>[(0,d.bF)(g,{icon:"home",class:"header-icon",onClick:k.handleGoHome},null,8,["onClick"])])),_:1},8,["disabled"]),(0,d.bF)(w,{disabled:k.disableTooltip,content:"返回上传页",placement:"bottom"},{default:(0,d.k6)((()=>[(0,d.bF)(g,{icon:"upload",class:"header-icon",onClick:k.handleGoUpload},null,8,["onClick"])])),_:1},8,["disabled"]),(0,d.bF)(w,{disabled:k.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,d.k6)((()=>[(0,d.bF)(g,{icon:"sign-out-alt",class:"header-icon",onClick:k.handleLogout},null,8,["onClick"])])),_:1},8,["disabled"])])])])),_:1}),(0,d.Lk)("div",h,[(0,d.bF)(_,{data:b.dealedData,"default-sort":{prop:"count",order:"descending"},class:"main-table","table-layout":"fixed"},{default:(0,d.k6)((()=>[(0,d.bF)(T,{type:"expand"},{default:(0,d.k6)((t=>[(0,d.Lk)("div",m,[e[1]||(e[1]=(0,d.Lk)("h3",{style:{"text-align":"center"}},"上传文件列表",-1)),(0,d.bF)(_,{data:t.row.data,style:{width:"100%"},"default-sort":{prop:"metadata.TimeStamp",order:"descending"},"table-layout":"fixed"},{default:(0,d.k6)((()=>[(0,d.bF)(T,{prop:"metadata.FileName",label:"文件名"}),(0,d.bF)(T,{prop:"name",label:"文件预览"},{default:(0,d.k6)((({row:t})=>[t.metadata?.FileType?.includes("image")?((0,d.uX)(),(0,d.Wv)(F,{key:0,src:"/file/"+t.name,fit:"cover",lazy:"",style:{width:"100px",height:"100px"}},null,8,["src"])):((0,d.uX)(),(0,d.CE)("video",{key:1,src:"/file/"+t.name,controls:"",style:{width:"100px",height:"100px"}},null,8,p))])),_:1}),(0,d.bF)(T,{formatter:k.formatTimeStamp,label:"上传时间",prop:"metadata.TimeStamp",sortable:"","sort-method":k.sortByTimestamp},{default:(0,d.k6)((({row:t})=>[(0,d.eW)((0,s.v_)(k.formatTimeStamp(t.metadata.TimeStamp)),1)])),_:1},8,["formatter","sort-method"])])),_:2},1032,["data"])])])),_:1}),(0,d.bF)(T,{prop:"ip",label:"IP地址"}),(0,d.bF)(T,{prop:"count",label:"上传次数",sortable:""})])),_:1},8,["data"])])])}a(4114),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698);var b=a(782),k={name:"CustomerConfig",data(){return{tableData:[],dealedData:[]}},computed:{...(0,b.L8)(["credentials"]),disableTooltip(){return window.innerWidth<768}},methods:{async fetchWithAuth(t,e={}){this.credentials&&(e.headers={...e.headers,Authorization:`Basic ${this.credentials}`},e.credentials="include");const a=await fetch(t,e);if(401===a.status)throw this.$message.error("认证状态错误,请重新登录"),this.$router.push("/adminLogin"),new Error("Unauthorized");return a},dealByIP(t){let e=[],a=new Set;return t.forEach((t=>{t.metadata?.UploadIP&&a.add(t.metadata.UploadIP)})),a.forEach((a=>{let o=t.filter((t=>t.metadata?.UploadIP===a)),n=o.length;e.push({ip:a,count:n,data:o})})),e},handleGoUpload(){this.$router.push("/")},handleLogout(){this.$store.commit("setCredentials",null),this.$router.push("/adminLogin")},handleGoHome(){this.$router.push("/dashboard")},formatTimeStamp(t){return new Date(t).toLocaleString()},sortByTimestamp(t,e){return new Date(t.metadata.TimeStamp)-new Date(e.metadata.TimeStamp)}},mounted(){this.fetchWithAuth("/api/manage/check",{method:"GET"}).then((t=>t.text())).then((t=>{if("true"==t)return this.showLogoutButton=!0,this.fetchWithAuth("/api/manage/list",{method:"GET"});if("Not using basic auth."==t)return this.fetchWithAuth("/api/manage/list",{method:"GET"});throw new Error("Unauthorized")})).then((t=>t.json())).then((t=>{this.tableData=t,this.dealedData=this.dealByIP(t)})).catch((t=>{"Unauthorized"!==t.message&&this.$message.error("同步数据时出错,请检查网络连接")}))}},g=a(1241);const w=(0,g.A)(k,[["render",f],["__scopeId","data-v-0187bf42"]]);var y=w},8736:function(t,e,a){a(5331)},7128:function(t,e,a){a(5331),a(4318)},8450:function(t,e,a){a(5331)},9104:function(t,e,a){a(5331)},5970:function(t,e,a){a(5331)},8785:function(t,e,a){a(5331)},213:function(t,e,a){a(5331),a(9104)}}]);
|
||||
//# sourceMappingURL=596.3b4a6305.js.map
|
||||
BIN
js/596.3b4a6305.js.gz
Normal file
BIN
js/596.3b4a6305.js.gz
Normal file
Binary file not shown.
1
js/596.3b4a6305.js.map
Normal file
1
js/596.3b4a6305.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/596.3b4a6305.js.map.gz
Normal file
BIN
js/596.3b4a6305.js.map.gz
Normal file
Binary file not shown.
2
js/664.1519d31b.js
Normal file
2
js/664.1519d31b.js
Normal file
File diff suppressed because one or more lines are too long
BIN
js/664.1519d31b.js.gz
Normal file
BIN
js/664.1519d31b.js.gz
Normal file
Binary file not shown.
1
js/664.1519d31b.js.map
Normal file
1
js/664.1519d31b.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/664.1519d31b.js.map.gz
Normal file
BIN
js/664.1519d31b.js.map.gz
Normal file
Binary file not shown.
2
js/782.ee638005.js
Normal file
2
js/782.ee638005.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[782],{6782:function(e,s,a){a.r(s),a.d(s,{default:function(){return k}});var n=a(47),t=(a(5331),a(9648),a(2105)),o=(a(9092),a(6768)),r=a(5130);const i={class:"login"},u={class:"login-container"},l={class:"input-container"},c={class:"input-container"};function d(e,s,a,d,p,m){const h=t.WK,k=n.S2;return(0,o.uX)(),(0,o.CE)("div",i,[(0,o.Lk)("div",u,[s[5]||(s[5]=(0,o.Lk)("h1",null,"AdminLogin",-1)),(0,o.Lk)("div",l,[s[2]||(s[2]=(0,o.Lk)("a",{class:"input-name"},"用户名:",-1)),(0,o.bF)(h,{modelValue:p.username,"onUpdate:modelValue":s[0]||(s[0]=e=>p.username=e),placeholder:"请输入用户名",class:"username-input"},null,8,["modelValue"])]),(0,o.Lk)("div",c,[s[3]||(s[3]=(0,o.Lk)("a",{class:"input-name"},"密码:",-1)),(0,o.bF)(h,{modelValue:p.password,"onUpdate:modelValue":s[1]||(s[1]=e=>p.password=e),placeholder:"请输入密码",class:"password-input",type:"password","show-password":"",onKeyup:(0,r.jR)(m.login,["enter","native"])},null,8,["modelValue","onKeyup"])]),(0,o.bF)(k,{class:"submit",type:"primary",onClick:m.login},{default:(0,o.k6)((()=>s[4]||(s[4]=[(0,o.eW)("登录")]))),_:1},8,["onClick"])])])}a(4114),a(4979);var p={data(){return{password:"",username:""}},methods:{async login(){const e=btoa(`${this.username}:${this.password}`);try{const s=await fetch("/api/manage/check",{method:"GET",headers:{Authorization:`Basic ${e}`},credentials:"include"});401===s.status?this.$message.error("用户名或密码错误"):200===s.status?(this.$store.commit("setCredentials",e),this.$router.push("/dashboard")):this.$message.error("用户名或密码错误")}catch(s){this.$message.error("服务器错误")}}}},m=a(1241);const h=(0,m.A)(p,[["render",d],["__scopeId","data-v-50aaab2d"]]);var k=h}}]);
|
||||
//# sourceMappingURL=782.ee638005.js.map
|
||||
BIN
js/782.ee638005.js.gz
Normal file
BIN
js/782.ee638005.js.gz
Normal file
Binary file not shown.
1
js/782.ee638005.js.map
Normal file
1
js/782.ee638005.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/782.ee638005.js.map.gz
Normal file
BIN
js/782.ee638005.js.map.gz
Normal file
Binary file not shown.
2
js/986.79584b54.js
Normal file
2
js/986.79584b54.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[986],{986:function(s,t,e){e.r(t),e.d(t,{default:function(){return b}});var i=e(47),a=(e(5331),e(9648),e(2105)),n=(e(9092),e(6768)),l=e(5130);const o={class:"login"},r={class:"login-container"};function g(s,t,e,g,c,u){const p=a.WK,h=i.S2;return(0,n.uX)(),(0,n.CE)("div",o,[t[3]||(t[3]=(0,n.Lk)("img",{id:"bg1",class:"background-image1",alt:"Background Image"},null,-1)),t[4]||(t[4]=(0,n.Lk)("img",{id:"bg2",class:"background-image2",alt:"Background Image"},null,-1)),(0,n.Lk)("div",r,[t[2]||(t[2]=(0,n.Lk)("h1",null,"Login",-1)),(0,n.bF)(p,{class:"password-input",modelValue:c.password,"onUpdate:modelValue":t[0]||(t[0]=s=>c.password=s),placeholder:"输入认证码,若未设置留空即可~",type:"password","show-password":"",onKeyup:(0,l.jR)(u.login,["enter","native"])},null,8,["modelValue","onKeyup"]),(0,n.bF)(h,{class:"submit",type:"primary",onClick:u.login},{default:(0,n.k6)((()=>t[1]||(t[1]=[(0,n.eW)("登录")]))),_:1},8,["onClick"])])])}e(4114);var c=e(4570),u=e.n(c),p=e(4373),h=e(782),d={data(){return{password:"",writtenPass:"",bingWallPaperIndex:0,customWallPaperIndex:0}},computed:{...(0,h.L8)(["userConfig","bingWallPapers"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1}},mounted(){const s=document.getElementById("bg1"),t=document.getElementById("bg2");"bing"===this.userConfig?.loginBkImg?this.$store.dispatch("fetchBingWallPapers").then((()=>{s.src=this.bingWallPapers[this.bingWallPaperIndex]?.url,s.onload=()=>{s.style.opacity=this.bkOpacity},setInterval((()=>{let e=0!=s.style.opacity?s:t,i=0!=s.style.opacity?t:s;e.style.opacity=0,this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length,i.src=this.bingWallPapers[this.bingWallPaperIndex]?.url,i.onload=()=>{i.style.opacity=this.bkOpacity}}),this.bkInterval)})):this.userConfig?.loginBkImg instanceof Array&&this.userConfig?.loginBkImg?.length>1?(s.src=this.userConfig.loginBkImg[this.customWallPaperIndex],s.onload=()=>{s.style.opacity=this.bkOpacity},setInterval((()=>{let e=0!=s.style.opacity?s:t,i=0!=s.style.opacity?t:s;e.style.opacity=0,this.customWallPaperIndex=(this.customWallPaperIndex+1)%this.userConfig.loginBkImg.length,i.src=this.userConfig.loginBkImg[this.customWallPaperIndex],i.onload=()=>{i.style.opacity=this.bkOpacity}}),this.bkInterval)):this.userConfig?.loginBkImg instanceof Array&&1==this.userConfig?.loginBkImg?.length?(s.src=this.userConfig.loginBkImg[0],s.onload=()=>{s.style.opacity=this.bkOpacity}):(s.src=e(732),s.onload=()=>{s.style.opacity=this.bkOpacity})},methods:{login(){""===this.password?this.writtenPass="unset":this.writtenPass=this.password,p.A.post("/login",{authCode:this.password}).then((s=>{200===s.status?(u().set("authCode",this.writtenPass,"14d"),this.$router.push("/"),this.$message.success("登录成功~")):this.$message.error("登录失败,请检查认证码是否正确~")})).catch((s=>{this.$message.error("登录失败,请检查认证码是否正确~")}))}}},y=e(1241);const m=(0,y.A)(d,[["render",g],["__scopeId","data-v-1774635e"]]);var b=m},732:function(s,t,e){s.exports=e.p+"img/background.ea1b7ee7.jpg"}}]);
|
||||
//# sourceMappingURL=986.79584b54.js.map
|
||||
BIN
js/986.79584b54.js.gz
Normal file
BIN
js/986.79584b54.js.gz
Normal file
Binary file not shown.
1
js/986.79584b54.js.map
Normal file
1
js/986.79584b54.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/986.79584b54.js.map.gz
Normal file
BIN
js/986.79584b54.js.map.gz
Normal file
Binary file not shown.
46
js/app.4bcc3eec.js
Normal file
46
js/app.4bcc3eec.js
Normal file
File diff suppressed because one or more lines are too long
BIN
js/app.4bcc3eec.js.gz
Normal file
BIN
js/app.4bcc3eec.js.gz
Normal file
Binary file not shown.
1
js/app.4bcc3eec.js.map
Normal file
1
js/app.4bcc3eec.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/app.4bcc3eec.js.map.gz
Normal file
BIN
js/app.4bcc3eec.js.map.gz
Normal file
Binary file not shown.
46
js/app.4eecf9f2.js
Normal file
46
js/app.4eecf9f2.js
Normal file
File diff suppressed because one or more lines are too long
BIN
js/app.4eecf9f2.js.gz
Normal file
BIN
js/app.4eecf9f2.js.gz
Normal file
Binary file not shown.
1
js/app.4eecf9f2.js.map
Normal file
1
js/app.4eecf9f2.js.map
Normal file
File diff suppressed because one or more lines are too long
BIN
js/app.4eecf9f2.js.map.gz
Normal file
BIN
js/app.4eecf9f2.js.map.gz
Normal file
Binary file not shown.
Reference in New Issue
Block a user