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

无法从 url 中找到公共文件

无法从 url 中找到公共文件

Go
海绵宝宝撒 2023-06-12 16:22:25
我正在尝试使用以下方法获取公开可用文件的内容ioutil.ReadFile(),但找不到该文件:panic: open http://www.pdf995.com/samples/pdf.pdf: No such file or directory这是我的代码:// Reading and writing files are basic tasks needed for// many Go programs. First we'll look at some examples of// reading files.package mainimport (    "fmt"    "io/ioutil")// Reading files requires checking most calls for errors.// This helper will streamline our error checks below.func check(e error) {    if e != nil {        panic(e)    }}func main() {    fileInUrl, err := ioutil.ReadFile("http://www.pdf995.com/samples/pdf.pdf")    if err != nil {        panic(err)    }    fmt.Printf("HERE --- fileInUrl: %+v", fileInUrl)}这是一个游乐场示例
查看完整描述

1 回答

?
倚天杖

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

ioutil.ReadFile() 不支持 http。

如果您查看源代码 ( https://golang.org/src/io/ioutil/ioutil.go?s=1503:1549#L42 ),请使用 os.Open 打开文件。

我想我可以做这个编码。

package main


import (

    "io"

    "net/http"

    "os"

)


func main() {


    fileUrl := "http://www.pdf995.com/samples/pdf.pdf"


    if err := DownloadFile("example.pdf", fileUrl); err != nil {

        panic(err)

    }

}


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

}

但是,go playgound 不是协议(go error dial tcp: Protocol not available)。


所以,你必须在电脑上做。


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

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