POST data using the Content-Type multipart/form-data

后端 未结 7 1507
小鲜肉
小鲜肉 2020-11-27 12:16

I\'m trying to upload images from my computer to a website using go. Usually, I use a bash script that sends a file and a key to the server:

curl -F \"image         


        
7条回答
  •  忘掉有多难
    2020-11-27 13:12

    Send file from one service to another:

    func UploadFile(network, uri string, f multipart.File, h *multipart.FileHeader) error {
    
        buf := new(bytes.Buffer)
        writer := multipart.NewWriter(buf)
    
        part, err := writer.CreateFormFile("file", h.Filename)
    
        if err != nil {
            log.Println(err)
            return err
        }
    
        b, err := ioutil.ReadAll(f)
    
        if err != nil {
            log.Println(err)
            return err
        }
    
        part.Write(b)
        writer.Close()
    
        req, _ := http.NewRequest("POST", uri, buf)
    
        req.Header.Add("Content-Type", writer.FormDataContentType())
        client := &http.Client{}
        resp, err := client.Do(req)
    
        if err != nil {
            return err
        }
        defer resp.Body.Close()
    
        b, _ = ioutil.ReadAll(resp.Body)
        if resp.StatusCode >= 400 {
            return errors.New(string(b))
        }
        return nil
    }
    

提交回复
热议问题