亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

上傳文件時杜松子酒不斷返回204

上傳文件時杜松子酒不斷返回204

Go
尚方寶劍之說 2022-05-18 14:19:44
我用 OPTIONS 方法得到一個 204,但似乎沒有達到終點 只需像這樣構建一個簡單的文件上傳端點:package mainimport  (    "cloud.google.com/go/storage"    "github.com/gin-gonic/gin"    "github.com/gin-contrib/cors"    "google.golang.org/api/option"    "io"    "log") const uploadBucket = "some-cool-bucket-name" const uploadApiKey = "some-advanced-key"func main() {    router := gin.Default()    rg := router.Group("api/v1/photo")    {        rg.PATCH("/", uploadFile)    }    router.Use(cors.Default())    router.Run()}func uploadFile(c *gin.Context) {    mr, e := c.Request.MultipartReader()    if e != nil {        panic("Error reading request")    }    client, e := storage.NewClient(c, option.WithAPIKey(uploadApiKey))    bucket := client.Bucket(uploadBucket)    for {        p, e := mr.NextPart()        if e == io.EOF {            break        } else if e != nil {            panic("Error processing file")        }        w := bucket.Object(p.FileName()).NewWriter(c)        if _, e := io.Copy(w, p); e != nil {            panic("Error during chunk upload")        } else if e := w.Close(); e != nil {            panic("Could not finalize chunk writing")        }    }}任何想法為什么?
查看完整描述

2 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

在 CORS 下使用:


func CORS() gin.HandlerFunc {

    // TO allow CORS

    return func(c *gin.Context) {

        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")

        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")

        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")

        if c.Request.Method == "OPTIONS" {

            c.AbortWithStatus(204)

            return

        }

        c.Next()

    }

}

接下來,您必須將 cors 添加到您的路線中:


    router := gin.Default()

    router.Use(CORS())

另外,最好使用 POST 方法而不是 PATCH。我很確定它會解決你的問題。


查看完整回答
反對 回復 2022-05-18
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

您可以通過使用POST方法而不是PATCH.

例如:

func main() {
    router := gin.Default()
    rg := router.Group("api/v1/photo")
    {
        rg.POST("/", uploadFile)
    }
    router.Use(cors.Default())
    router.Run()}

潛在的 CORS 問題

您可能需要在 Go 服務中設置正確的跨域資源共享。

一些額外的參考

所以回答常見 HTTP 方法之間的差異 - PUT、POST 和 PATCH 有什么區別?.

PATCH:提交對資源的部分修改。如果您只需要更新資源的一個字段,您可能需要使用 PATCH 方法。

HTTP 文件上傳是如何工作的?


查看完整回答
反對 回復 2022-05-18
  • 2 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號