为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中检查URL是否可下载?

如何在golang中检查URL是否可下载?

Go
临摹微笑 2022-10-10 17:01:57
我正在尝试将文件从 url 下载到本地文件。我想测试请求的 url 是否只是文件,如果它不是文件,它应该返回错误的请求任何帮助都将不胜感激package main        import (        "fmt"        "io"        "net/http"        "os"    )        func main() {        fileUrl := "http://example.com/file.txt"        err := DownloadFile("./example.txt", fileUrl)        if err != nil {            panic(err)        }        fmt.Println("Downloaded: " + fileUrl)    }        // DownloadFile will download a url to a local file.    func DownloadFile(filepath string, url string) error {            // Get the data        resp, err := http.Get(url)        if err != nil {            return err        }        defer resp.Body.Close()            // Create the file        out, err := os.Create(filepath)        if err != nil {            return err        }        defer out.Close()            // Write the body to file        _, err = io.Copy(out, resp.Body)        return err    }
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

以下是检查 URL 是否可下载的方法。希望这可以帮助某人:)


package main

            

import (

    "fmt"

    "io"

    "net/http"

    "os"

)

            

func main() {

    fileUrl := "http://example.com/file.txt"

    err := DownloadFile("./example.txt", fileUrl)

    if err != nil {

        panic(err)

    }

    fmt.Println("Downloaded: " + fileUrl)

}

            

// DownloadFile will download a url to a local file.

func DownloadFile(filepath string, url string) error {

            

    // Get the data

    resp, err := http.Get(url)

    contentType = resp.Header.Get("Content-Type")  

        

    if err != nil {

         return err

    }

    defer resp.Body.Close()

        

    if contentType == "application/octet-stream" {

        // Create the file

        out, err := os.Create(filepath)

        if err != nil {

            return err

        }

        defer out.Close()

            

        // Write the body to file

        _, err = io.Copy(out, resp.Body)

        return err

    } else {

        fmt.Println("Requested URL is not downloadable")

        return nil

    }

}


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信