亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編蘋果為您帶來關于如何正確使用AnonFiles API發布文件的指南。AnonFiles API是一個強大的工具,可以幫助您快速、安全地上傳和分享文件。本指南將為您提供詳細的步驟和示例,幫助您輕松掌握API的使用方法。無論您是開發者還是普通用戶,都能從本指南中獲得實用的技巧和建議,讓您的文件分享體驗更加順暢和高效。讓我們一起來探索AnonFiles API的魅力吧!

問題內容

我正在嘗試創建一個函數,使用 anonfiles api 在 anonfiles.com 網站上托管您的文件。即使我正確使用了 api,它總是返回 nil。 響應缺少消息

func host(file string) {
    fileBytes, err := ioutil.ReadFile(file)
    if err != nil {
        fmt.Println("\033[1;31mCommand > Host: Could not read file,", err, "\033[0m")
        return
    }

    url := "https://api.anonfiles.com/upload"

    request, err := http.NewRequest("POST", url, bytes.NewBuffer(fileBytes))
    if err != nil {
        fmt.Println("\033[1;31mCommand > Host: Could not post request,", err, "\033[0m")
        return
    }

    request.Header.Set("Content-Type", "application/octet-stream")

    client := &http.Client{}
    response, err := client.Do(request)
    if err != nil {
        fmt.Println("\033[1;31mCommand > Host: Could not send request,", err, "\033[0m")
        return
    }
    defer response.Body.Close()

    body, err := ioutil.ReadAll(response.Body)
    if err != nil {
        fmt.Println("\033[1;31mCommand > Host: Could not read response,", err, "\033[0m")
        return
    }

    var result map[string]interface{}
    err = json.Unmarshal(body, &result)
    if err != nil {
        fmt.Println("\033[1;31mCommand > Host: Could not parse response,", err, "\033[0m")
        return
    }

    if response.StatusCode == 200 {
        if result["url"] == nil {
            fmt.Println("\033[1;31mCommand > Host: Response is missing URL\033[0m")
            return
        }
        fmt.Println("File hosted successfully:", result["url"].(string))
    } else {
        if result["message"] == nil {
            fmt.Println("\033[1;31mCommand > Host: Response is missing message\033[0m")
            return
        }
        fmt.Println("\033[1;31mCommand > Host:\033[0m", result["message"].(string))
    }
}

登錄后復制

解決方法

我想花點時間將這些評論擴展為答案。

首先,正如我們已經討論過的,您沒有使用正確的 api 來上傳文件。如果我們修改您的代碼以顯示完整的響應正文,如下所示:

client := &http.client{}
response, err := client.do(request)
if err != nil {
  fmt.println("\033[1;31mcommand > host: could not send request,", err, "\033[0m")
  return
}
defer response.body.close()

body, err := ioutil.readall(response.body)
if err != nil {
  fmt.println("\033[1;31mcommand > host: could not read response,", err, "\033[0m")
  return
}

fmt.printf("body:\n%s\n", body)

登錄后復制

我們看到以下內容:

{
  "status": false,
  "error": {
    "message": "no file chosen.",
    "type": "error_file_not_provided",
    "code": 10
  }
}

登錄后復制登錄后復制

我們收到此錯誤是因為您沒有在 multipart/form-data 請求中提供 file 參數。 我之前鏈接到的帖子有幾個示例發送多部分請求;我已經測試了其中的幾個,它們似乎按預期工作。

您還對 api 返回的響應做出了錯誤的假設。如果我們使用 curl 發出成功的請求并捕獲響應 json,我們會發現它如下所示:

{
  "status": true,
  "data": {
    "file": {
      "url": {
        "full": "https://anonfiles.com/k8cdobwey7/test_txt",
        "short": "https://anonfiles.com/k8cdobwey7"
      },
      "metadata": {
        "id": "k8cdobwey7",
        "name": "test.txt",
        "size": {
          "bytes": 12,
          "readable": "12 b"
        }
      }
    }
  }
}

登錄后復制

請注意,沒有 response["url"]response["message"]。如果您想要上傳文件的url,則需要獲取response["data"]["file"]["url"]["full"](或["short"])。

同樣,我們可以看到上面的錯誤響應示例,如下所示:

{
  "status": false,
  "error": {
    "message": "no file chosen.",
    "type": "error_file_not_provided",
    "code": 10
  }
}

登錄后復制登錄后復制

這不是 result["message"];那是 result["error"]["message"]

因為您要解組到 map[string] 接口 ,所以獲取這些嵌套鍵會有點痛苦。我發現為上述響應創建 go 結構是最簡單的,只需將其解組為適當類型的變量即可。

這讓我得到以下類型:

type (
  anonfilesurl struct {
    full  string `json:"full"`
    short string `json:"short"`
  }

  anonfilesmetadata struct {
    id   string `json:"id"`
    name string `json:"name"`
    size struct {
      bytes    int    `json:"bytes"`
      readable string `json:"readable"`
    } `json:"size"`
  }

  anonfilesdata struct {
    file struct {
      url      anonfilesurl      `json:"url"`
      metadata anonfilesmetadata `json:"metadata"`
    } `json:"file"`
  }

  anonfileserror struct {
    message string
    type    string
    code    int
  }

  anonfilesresponse struct {
    status bool           `json:"status"`
    data   anonfilesdata  `json:"data"`
    error  anonfileserror `json:"error"`
  }
)

登錄后復制

然后解組響應如下所示:

var result anonfilesresponse
err = json.unmarshal(body, &result)

登錄后復制

我們可以請求以下字段:

fmt.Printf("URL: %s\n", result.Data.File.URL.Full)

登錄后復制

分享到:
標簽:overflow
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定