mirror of
https://github.com/Kakune55/Pixel.git
synced 2025-05-06 18:29:25 +08:00
添加了列出所有图片的功能
This commit is contained in:
parent
7b35f88fee
commit
09fde30b3c
99
Web/list.html
Normal file
99
Web/list.html
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
margin: 20px;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
gap: 20px; /* 左右留出的空白 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-item {
|
||||||
|
width: calc(20% - 20px); /* 五张图片占据的宽度 */
|
||||||
|
margin-bottom: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: #fff;
|
||||||
|
transition: transform 0.3s ease-in-out;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-item:hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
border-radius: 8px 8px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-box {
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<title>图片展示页</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="gallery" id="gallery">
|
||||||
|
<!-- 图片将通过JavaScript动态添加到这里 -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Ajax请求从服务器获取图片ID数组
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("GET", "/idlist", true);
|
||||||
|
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||||
|
const imageIds = JSON.parse(xhr.responseText);
|
||||||
|
displayImages(imageIds);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
xhr.send();
|
||||||
|
|
||||||
|
function displayImages(imageIds) {
|
||||||
|
const gallery = document.getElementById("gallery");
|
||||||
|
|
||||||
|
// 动态添加图片和信息到展示页
|
||||||
|
imageIds.forEach(function(id) {
|
||||||
|
const galleryItem = document.createElement("div");
|
||||||
|
galleryItem.classList.add("gallery-item");
|
||||||
|
|
||||||
|
const img = document.createElement("img");
|
||||||
|
img.src = `/img/mini?id=${id}`;
|
||||||
|
|
||||||
|
const infoBox = document.createElement("div");
|
||||||
|
infoBox.classList.add("info-box");
|
||||||
|
infoBox.innerText = `ID: ${id}`;
|
||||||
|
|
||||||
|
// 点击事件,跳转到对应链接
|
||||||
|
galleryItem.addEventListener("click", function() {
|
||||||
|
window.location.href = `/info?id=${id}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
galleryItem.appendChild(img);
|
||||||
|
galleryItem.appendChild(infoBox);
|
||||||
|
gallery.appendChild(galleryItem);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -84,3 +84,33 @@ func GetFileName(linkID string) string {
|
|||||||
}
|
}
|
||||||
return md5+ext
|
return md5+ext
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func QueryId() ([]string, error) {
|
||||||
|
var result []string
|
||||||
|
|
||||||
|
db, err := sql.Open("sqlite3", "./data/database.db")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
rows, err := db.Query("SELECT link FROM mytable")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var name string
|
||||||
|
if err := rows.Scan(&name); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
result = append(result, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
29
main.go
29
main.go
@ -3,6 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"Pixel/database"
|
"Pixel/database"
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"html/template"
|
"html/template"
|
||||||
"image"
|
"image"
|
||||||
@ -63,9 +64,11 @@ func init() {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
http.HandleFunc("/info", showimg)
|
http.HandleFunc("/info", showimg)
|
||||||
|
http.HandleFunc("/info/list", showlist)
|
||||||
http.HandleFunc("/upload", upload)
|
http.HandleFunc("/upload", upload)
|
||||||
http.HandleFunc("/img/",downloadHandler)//设置访问的路由
|
http.HandleFunc("/img/",downloadHandler)//设置访问的路由
|
||||||
http.HandleFunc("/img/mini",displayThumbnailHandler)
|
http.HandleFunc("/img/mini",displayThumbnailHandler)
|
||||||
|
http.HandleFunc("/idlist",arrayHandler)
|
||||||
fmt.Println("Web服务器已启动")
|
fmt.Println("Web服务器已启动")
|
||||||
err := http.ListenAndServe(":9090", nil) //设置监听的端口
|
err := http.ListenAndServe(":9090", nil) //设置监听的端口
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -78,6 +81,11 @@ func showimg(w http.ResponseWriter, r *http.Request) {
|
|||||||
t.Execute(w, "Hello")
|
t.Execute(w, "Hello")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func showlist(w http.ResponseWriter, r *http.Request) {
|
||||||
|
t, _ := template.ParseFiles("Web/list.html")
|
||||||
|
t.Execute(w, "Hello")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 处理/upload 逻辑
|
// 处理/upload 逻辑
|
||||||
func upload(w http.ResponseWriter, r *http.Request) {
|
func upload(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -230,3 +238,24 @@ func displayThumbnailHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func arrayHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
// 获取数组数据
|
||||||
|
data, err := database.QueryId()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "数组数据获取失败", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 将数组数据转换为 JSON 格式
|
||||||
|
responseData, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, "无法处理数组数据", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置响应头,指定内容类型为 JSON
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
// 将 JSON 数据写入响应体
|
||||||
|
w.Write(responseData)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user