@@ -1,3 +1,6 @@
//go:build example
// +build example
package main
import (
@@ -16,52 +19,51 @@ func main() {
log . Fatal ( "Failed to load config:" , err )
}
// 创建存储实例( 使用OSS )
// 注意: 需要先实现OSS SDK集成
ossStorage , err := storage . NewStorage ( storage . StorageTypeOSS , cfg )
// 优先演示本地存储(可直接运行 )
localStorage , err := storage . NewStorage ( storage . StorageTypeLocal , cfg )
if err != nil {
log . Printf ( "Failed to create OSS storage: %v " , err )
log . Println ( "Note: OSS SDK integration is required" )
// 继续演示其他功能
} else {
// 创建上传处理器
uploadHandler := storage . NewUploadHandler ( storage . UploadHandlerConfig {
Storage : ossStorage ,
MaxFileSize : 10 * 1024 * 1024 , // 10MB
AllowedExts : [ ] string { ".jpg" , ".jpeg" , ".png" , ".gif" , ".pdf" } ,
ObjectPrefix : "uploads/" ,
} )
log . Fatal ( "Failed to create Local storage:" , err )
}
// 创建代理查看处理器
proxyHandler := storage . NewProxyHandler ( oss Storage)
uploadHandler := storage . NewUploadHandler ( storage . UploadHandlerConfig {
Storage : local Storage,
MaxFileSize : 10 * 1024 * 1024 , // 10MB
AllowedExts : [ ] string { ".jpg" , ".jpeg" , ".png" , ".gif" , ".pdf" } ,
ObjectPrefix : "uploads/" ,
} )
// 创建中间件链
var corsConfig * middleware . CORSConfig
if cfg . GetCORS ( ) != nil {
c := cfg . GetCORS ( )
corsConfig = middleware . New CORSConfig (
c . AllowedOrigins ,
c. AllowedMethods ,
c . AllowedHeader s ,
c . ExposedHeader s,
c . AllowCredential s ,
c . MaxAge ,
)
}
chain := middleware . NewChain (
middleware . CORS ( corsConfig ) ,
middleware . Timezone ,
proxyHandler := storage . NewProxyHandler ( localStorage )
// 创建中间件链
var corsConfig * middleware . CORSConfig
if cfg . Get CORS() != nil {
c := cfg . GetCORS ( )
corsConfig = middleware . NewCORSConfig (
c . AllowedOrigin s ,
c . AllowedMethod s,
c . AllowedHeader s ,
c . ExposedHeaders ,
c . AllowCredentials ,
c . MaxAge ,
)
}
chain := middleware . NewChain (
middleware . CORS ( corsConfig ) ,
middleware . Timezone ,
)
// 注册路由
mux := http . NewServeMux ( )
mux . Handle ( "/upload" , chain . Then ( uploadHandler ) )
mux . Handle ( "/file" , chain . Then ( proxyHandler ) )
// 注册路由
mux := http . NewServeMux ( )
mux . Handle ( "/upload" , chain . Then ( uploadHandler ) )
mux . Handle ( "/file" , chain . Then ( proxyHandler ) )
log . Println ( "S torage server started on :8080" )
log . Println ( "Upload: POST /upload" )
log . Println ( "View: GET /file?key=images/test .jpg" )
log . Fatal ( http . ListenAndServe ( ":8080" , mux ) )
log . Println ( "Local s torage server started on :8080" )
log . Println ( "Upload: POST /upload" )
log . Println ( "View: GET /file?key=uploads/xxx .jpg" )
// 提示: OSS 需要你自行集成对应 SDK( 当前 go-common 中仅提供接口框架)
if _ , err := storage . NewStorage ( storage . StorageTypeOSS , cfg ) ; err != nil {
log . Printf ( "OSS storage not ready: %v" , err )
}
// 演示MinIO存储
@@ -79,5 +81,6 @@ func main() {
objectKey2 := storage . GenerateObjectKeyWithDate ( "images" , "test.jpg" )
log . Printf ( "Object key 2: %s" , objectKey2 )
}
log . Fatal ( http . ListenAndServe ( ":8080" , mux ) )
}