diff --git a/.gitignore b/.gitignore
index 3af0ccb..ee1b030 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/data
+user.json
diff --git a/config/load.go b/config/load.go
new file mode 100644
index 0000000..2291264
--- /dev/null
+++ b/config/load.go
@@ -0,0 +1,44 @@
+package config
+
+import (
+ "encoding/json"
+ "os"
+)
+type User struct {
+ Listen string `json:"listen"`
+}
+func ReadConfig(filePath string) (User, error) {
+ // 检查文件是否存在
+ if _, err := os.Stat(filePath); os.IsNotExist(err) {
+ // 文件不存在,创建一个新的JSON文件
+ user := User{Listen: ":9090"}
+ data, err := json.Marshal(user)
+ if err != nil {
+ return User{}, err
+ }
+ err = os.WriteFile(filePath, data, 0644)
+ if err != nil {
+ return User{}, err
+ }
+ }
+ // 读取文件内容
+ data, err := os.ReadFile(filePath)
+ if err != nil {
+ return User{}, err
+ }
+ // 解析JSON数据
+ var user User
+ err = json.Unmarshal(data, &user)
+ if err != nil {
+ return User{}, err
+ }
+ return user, nil
+}
+ //如何调用
+ //---------------------------------------
+ // filePath := "user.json"
+ // // 读取配置文件
+ // user, err := ReadConfig(filePath)
+ // if err != nil {
+ // fmt.Println("读取配置文件失败:", err)
+ // }
diff --git a/main.go b/main.go
index 26b2bc0..a43e443 100644
--- a/main.go
+++ b/main.go
@@ -1,6 +1,7 @@
package main
import (
+ "Pixel/config"
"Pixel/database"
"crypto/md5"
"encoding/json"
@@ -20,7 +21,6 @@ import (
"github.com/disintegration/imaging"
)
-
func init() {
const appinfo string = `
@@ -61,18 +61,24 @@ func init() {
fmt.Println("数据库初始化完成")
}
-
func main() {
+ filePath := "user.json"
+ // 读取配置文件
+ config, err := config.ReadConfig(filePath)
+ if err != nil {
+ fmt.Println("读取配置文件失败:", err)
+ }
+
http.HandleFunc("/info", showimg)
- http.HandleFunc("/info/list", showlist)//
- http.HandleFunc("/upload", upload)//上传图片
- http.HandleFunc("/img/",downloadHandler)//图片接口
- http.HandleFunc("/img/mini",displayThumbnailHandler)//缩略图接口
- http.HandleFunc("/idlist",arrayHandler)//获取现有图片id
- http.HandleFunc("/img/del",deleteImagesHandler)//删除相应图片
- http.HandleFunc("/login",login)//登录页
- fmt.Println("Web服务器已启动")
- err := http.ListenAndServe(":9090", nil) //设置监听的端口
+ http.HandleFunc("/info/list", showlist) //
+ http.HandleFunc("/upload", upload) //上传图片
+ http.HandleFunc("/img/", downloadHandler) //图片接口
+ http.HandleFunc("/img/mini", displayThumbnailHandler) //缩略图接口
+ http.HandleFunc("/idlist", arrayHandler) //获取现有图片id
+ http.HandleFunc("/img/del", deleteImagesHandler) //删除相应图片
+ http.HandleFunc("/login", login) //登录页
+ fmt.Println("Web服务器已启动")
+ err = http.ListenAndServe(config.Listen, nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
@@ -85,7 +91,7 @@ func showimg(w http.ResponseWriter, r *http.Request) {
func showlist(w http.ResponseWriter, r *http.Request) {
cookie, _ := r.Cookie("login")
- if cookie == nil{ //未授权禁止访问
+ if cookie == nil { //未授权禁止访问
w.WriteHeader(401)
w.Write([]byte(`验证失败 点此登录`))
return
@@ -95,65 +101,63 @@ func showlist(w http.ResponseWriter, r *http.Request) {
t.Execute(w, "Hello")
}
-
// 处理/upload 逻辑
func upload(w http.ResponseWriter, r *http.Request) {
- fmt.Println("method:", r.Method) // 获取请求的方法
+ fmt.Println("method:", r.Method) // 获取请求的方法
- if r.Method == "GET" { // 前端页面渲染
- crutime := time.Now().Unix()
- h := md5.New()
- io.WriteString(h, strconv.FormatInt(crutime, 10))
- token := fmt.Sprintf("%x", h.Sum(nil))
+ if r.Method == "GET" { // 前端页面渲染
+ crutime := time.Now().Unix()
+ h := md5.New()
+ io.WriteString(h, strconv.FormatInt(crutime, 10))
+ token := fmt.Sprintf("%x", h.Sum(nil))
- t, _ := template.ParseFiles("Web/upload.html")
- t.Execute(w, token)
- } else { // 后端POST接收逻辑
- r.ParseMultipartForm(32 << 20)
- file, handler, err := r.FormFile("file")
- if err != nil {
- fmt.Println(err)
- return
- }
- defer file.Close()
+ t, _ := template.ParseFiles("Web/upload.html")
+ t.Execute(w, token)
+ } else { // 后端POST接收逻辑
+ r.ParseMultipartForm(32 << 20)
+ file, handler, err := r.FormFile("file")
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ defer file.Close()
- // 生成文件的MD5哈希
- h := md5.New()
- if _, err := io.Copy(h, file); err != nil {
- fmt.Println(err)
- return
- }
- md5sum := fmt.Sprintf("%x", h.Sum(nil))
+ // 生成文件的MD5哈希
+ h := md5.New()
+ if _, err := io.Copy(h, file); err != nil {
+ fmt.Println(err)
+ return
+ }
+ md5sum := fmt.Sprintf("%x", h.Sum(nil))
- // 获取文件扩展名
+ // 获取文件扩展名
fname := handler.Filename
- ext := path.Ext(fname)
+ ext := path.Ext(fname)
- // 创建新文件,使用MD5哈希和原始扩展名
- newFilename := md5sum + ext
- f, err := os.OpenFile("./data/img/"+newFilename, os.O_WRONLY|os.O_CREATE, 0666)
- if err != nil {
- fmt.Println(err)
- return
- }
- defer f.Close()
+ // 创建新文件,使用MD5哈希和原始扩展名
+ newFilename := md5sum + ext
+ f, err := os.OpenFile("./data/img/"+newFilename, os.O_WRONLY|os.O_CREATE, 0666)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ defer f.Close()
- // 将文件内容拷贝到新文件
- _, err = file.Seek(0, 0)
- if err != nil {
- fmt.Println(err)
- return
- }
- io.Copy(f, file)
+ // 将文件内容拷贝到新文件
+ _, err = file.Seek(0, 0)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+ io.Copy(f, file)
- // 存入数据库
+ // 存入数据库
var linkid = RandomString(10)
- database.NewFile(linkid,md5sum,ext)
+ database.NewFile(linkid, md5sum, ext)
w.Write([]byte(linkid))
- }
+ }
}
-
func RandomString(n int) string {
const letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
bytes := make([]byte, n)
@@ -248,9 +252,9 @@ func displayThumbnailHandler(w http.ResponseWriter, r *http.Request) {
}
}
-func arrayHandler(w http.ResponseWriter, r *http.Request) { //获取全部图片ID
+func arrayHandler(w http.ResponseWriter, r *http.Request) { //获取全部图片ID
cookie, _ := r.Cookie("login")
- if cookie == nil{ //未授权禁止访问
+ if cookie == nil { //未授权禁止访问
w.WriteHeader(401)
w.Write([]byte(`验证失败 点此登录`))
return
@@ -277,7 +281,7 @@ func arrayHandler(w http.ResponseWriter, r *http.Request) { //获取全部图
func deleteImagesHandler(w http.ResponseWriter, r *http.Request) {
cookie, _ := r.Cookie("login")
- if cookie == nil{ //未授权禁止访问
+ if cookie == nil { //未授权禁止访问
w.WriteHeader(401)
w.Write([]byte(`验证失败 点此登录`))
return
@@ -311,15 +315,15 @@ func login(w http.ResponseWriter, r *http.Request) {
if r.Method == "GET" {
t, _ := template.ParseFiles("Web/login.html")
w.Header().Set("Content-Type", "text/html")
- t.Execute(w,"")
+ t.Execute(w, "")
} else {
- userlist,_:= database.QueryUser()
+ userlist, _ := database.QueryUser()
fmt.Println(userlist)
if len(userlist) == 0 {
database.NewUser("admin", r.FormValue("passwd"))
} else {
if !database.CheckUserPasswd("admin", r.FormValue("passwd")) {
- http.Redirect(w, r, "/login",http.StatusFound)
+ http.Redirect(w, r, "/login", http.StatusFound)
fmt.Println("密码错误")
return
}
@@ -327,6 +331,6 @@ func login(w http.ResponseWriter, r *http.Request) {
cookie := http.Cookie{Name: "login", Value: "yes"}
http.SetCookie(w, &cookie)
fmt.Println("密码正确")
- http.Redirect(w, r, "/info/list",http.StatusFound)
+ http.Redirect(w, r, "/info/list", http.StatusFound)
}
-}
\ No newline at end of file
+}