存储到data
This commit is contained in:
		@@ -64,7 +64,7 @@ func CheckColorNullRows(offset int) {
 | 
				
			|||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			// 打开图像文件
 | 
								// 打开图像文件
 | 
				
			||||||
			filepath := "oss/" + matches[1]
 | 
								filepath := "data/oss/" + matches[1]
 | 
				
			||||||
			file, err := os.Open(filepath)
 | 
								file, err := os.Open(filepath)
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				fmt.Println("打开文件失败", index, item.ID, item.Content, err)
 | 
									fmt.Println("打开文件失败", index, item.ID, item.Content, err)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										24
									
								
								bin/main.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								bin/main.go
									
									
									
									
									
								
							@@ -7,6 +7,8 @@ import (
 | 
				
			|||||||
	"log"
 | 
						"log"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path/filepath"
 | 
				
			||||||
	"runtime"
 | 
						"runtime"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
@@ -520,6 +522,13 @@ func main() {
 | 
				
			|||||||
	http.HandleFunc("/webp/", func(w http.ResponseWriter, r *http.Request) {
 | 
						http.HandleFunc("/webp/", func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
		defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志
 | 
							defer LogComponent(time.Now().UnixNano(), r) // 最后打印日志
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 如果本地文件存在,直接输出
 | 
				
			||||||
 | 
							filePath := filepath.Join("data/webp", r.URL.Path)
 | 
				
			||||||
 | 
							if _, err := os.Stat(filePath); err != nil {
 | 
				
			||||||
 | 
								http.ServeFile(w, r, filePath)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		reg := regexp.MustCompile(`^/webp/([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9]+)-([0-9]+)-([a-zA-Z]+).(jpg|jpeg|png|webp)$`)
 | 
							reg := regexp.MustCompile(`^/webp/([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9]+)-([0-9]+)-([a-zA-Z]+).(jpg|jpeg|png|webp)$`)
 | 
				
			||||||
		matches := reg.FindStringSubmatch(r.URL.Path)
 | 
							matches := reg.FindStringSubmatch(r.URL.Path)
 | 
				
			||||||
		if len(matches) != 8 {
 | 
							if len(matches) != 8 {
 | 
				
			||||||
@@ -547,6 +556,21 @@ func main() {
 | 
				
			|||||||
			return
 | 
								return
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 将生成的 WebP 文件保存到本地
 | 
				
			||||||
 | 
							err = os.MkdirAll(filepath.Dir(filePath), os.ModePerm)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println("创建文件目录失败:", err)
 | 
				
			||||||
 | 
								w.WriteHeader(http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							err = os.WriteFile(filePath, data, 0644)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								log.Println("保存文件失败:", err)
 | 
				
			||||||
 | 
								w.WriteHeader(http.StatusInternalServerError)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 返回 WebP 图片数据
 | 
				
			||||||
		w.Header().Set("Content-Type", "image/webp")
 | 
							w.Header().Set("Content-Type", "image/webp")
 | 
				
			||||||
		w.Header().Set("Cache-Control", "max-age=31536000")
 | 
							w.Header().Set("Cache-Control", "max-age=31536000")
 | 
				
			||||||
		w.Write(data)
 | 
							w.Write(data)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,32 +27,17 @@ func (img *Image) Init(content string) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if len(regexp.MustCompile(`image.gameuiux.cn`).FindStringSubmatch(content)) > 0 {
 | 
						if len(regexp.MustCompile(`image.gameuiux.cn`).FindStringSubmatch(content)) > 0 {
 | 
				
			||||||
		key := regexp.MustCompile(`^https?://image.gameuiux.cn/`).ReplaceAllString(content, "")
 | 
							key := regexp.MustCompile(`^https?://image.gameuiux.cn/`).ReplaceAllString(content, "")
 | 
				
			||||||
		filePath := filepath.Join("oss", key)
 | 
							filePath := filepath.Join("data/oss", key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 先检查本地是否存在原图, 没有则从oss下载
 | 
							// 先检查本地是否存在原图, 没有则从OSS下载
 | 
				
			||||||
		if _, err := os.Stat(filePath); err != nil {
 | 
							if _, err := os.Stat(filePath); err != nil {
 | 
				
			||||||
 | 
								if err := os.MkdirAll(filepath.Dir(filePath), 0755); err != nil {
 | 
				
			||||||
			ensureDirExists := func(filePath string) error {
 | 
									log.Fatalf("创建目录失败: %v\n", err)
 | 
				
			||||||
				dir := filepath.Dir(filePath) // 获取文件所在的目录
 | 
					 | 
				
			||||||
				if _, err := os.Stat(dir); os.IsNotExist(err) {
 | 
					 | 
				
			||||||
					// 如果目录不存在,创建多级目录
 | 
					 | 
				
			||||||
					if err := os.MkdirAll(dir, 0755); err != nil {
 | 
					 | 
				
			||||||
						return err
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				return nil
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					 | 
				
			||||||
			// 确保目录存在
 | 
					 | 
				
			||||||
			if err := ensureDirExists(filePath); err != nil {
 | 
					 | 
				
			||||||
				log.Fatalf("Failed to create directory: %v\n", err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			bucket := GetBucket("gameui-image2")
 | 
								bucket := GetBucket("gameui-image2")
 | 
				
			||||||
			fmt.Println("从 OSS 下载:", key, filePath)
 | 
								fmt.Println("从 OSS 下载:", key, filePath)
 | 
				
			||||||
			err = bucket.GetObjectToFile(key, filePath)
 | 
								if err := bucket.GetObjectToFile(key, filePath); err != nil {
 | 
				
			||||||
			if err != nil {
 | 
									log.Println("下载文件失败:", err)
 | 
				
			||||||
				log.Println("Failed to download file: ", err)
 | 
					 | 
				
			||||||
				return err
 | 
									return err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user