Go - скачать файл с URL с Sequence - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь научиться чему-то новому с GoLang, и у меня застрял маленький пробел, вероятно, причина в том, что я не очень хорош в использовании массивов.

Итак, вот что я хочу сделать:

  1. Сделать переменную.
  2. Скачать с этой переменной.
  3. Добавить ++ 1 для этой переменной
  4. Скачать с добавлением 1

и зациклим, скажем, 10 раз.

У меня все хорошо с пунктами 1 и 2, но немного застрял с 3 и 4.:).

все файлы находятся в формате .pdf, поэтому я сделал там этот strconv.

Я, вероятно, должен сделать что-то вроде Loop в main и вызвать функцию DownloadFile с некоторыми параметрами массива?

package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "strconv"
)

func main() {
    url_id := strconv.Itoa(23430815+2)
    filename := url_id+".pdf"
    fileUrl := "https://someurLid="+url_id

    if err := DownloadFile(filename, fileUrl); err != nil {
        panic(err)
    }
    fmt.Println(fileUrl)
}


func DownloadFile(filepath string, url string) error {

    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    out, err := os.Create(filepath)
    if err != nil {
        return err
    }
    defer out.Close()

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

Ответы [ 2 ]

2 голосов
/ 19 апреля 2019

попробуйте это.

package main

import (
    "fmt"
    "io"
    "net/http"
    "os"
    "strconv"
)

func main() {
    url_id_num := 23430815+2
    for i := 0; i < 10; i++ {
        url_id := strconv.Itoa(url_id_num+i)
        filename := url_id+".pdf"
        fileUrl := "https://someurLid="+url_id

        if err := DownloadFile(filename, fileUrl); err != nil {
            panic(err)
        }
        fmt.Println(fileUrl)
    }
}

func DownloadFile(filepath string, url string) error {

    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    out, err := os.Create(filepath)
    if err != nil {
        return err
    }
    defer out.Close()

    _, err = io.Copy(out, resp.Body)
    return err
}
0 голосов
/ 19 апреля 2019

Cerise Limón дал ответ, и вот как это получилось.

    arr := make([]uint8, 3) //How many times it loops
url_id := 23430815 //Starting from id, filename
for range arr {
    filename := strconv.Itoa(url_id)+".pdf"
    fileUrl := "https://someurl?id="+strconv.Itoa(url_id)

    if err := DownloadFile(filename, fileUrl); err != nil {
        panic(err)
    }
    fmt.Println(fileUrl)
    url_id++
}

Спасибо, что указали, с чего мне начать! :.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...