Maison > développement back-end > Golang > Pourquoi est-ce que je reçois un \'file.zip\' vide lorsque je télécharge des fichiers publics depuis Google Drive à l'aide de Golang ?

Pourquoi est-ce que je reçois un \'file.zip\' vide lorsque je télécharge des fichiers publics depuis Google Drive à l'aide de Golang ?

Barbara Streisand
Libérer: 2024-10-28 05:48:30
original
794 Les gens l'ont consulté

Why am I getting a blank

Télécharger des fichiers publics depuis Google Drive à l'aide de Golang

Problème

Les programmeurs qui tentent de télécharger des fichiers publics depuis Google Drive à l'aide de Golang rencontrent des problèmes. Malgré un fichier public partagé, le code actuel entraîne la création d'un "file.zip" vide.

<code class="go">import (
    "fmt"
    "io"
    "net/http"
    "os"
)

// Main function
func main() {
    url := "https://docs.google.com/uc?export=download&amp;id=0B2Q7X-dUtUBebElySVh1ZS1iaTQ"
    fileName := "file.zip"
    fmt.Println("Downloading file...")
    output, err := os.Create(fileName)
    defer output.Close()
    response, err := http.Get(url)
    if err != nil {
        fmt.Println("Error while downloading", url, "-", error)
        return
    }
    defer response.Body.Close()
    n, err := io.Copy(output, response.Body)
    fmt.Println(n, "bytes downloaded")
}</code>
Copier après la connexion

Solution

Après enquête, il a été découvert que l'URL redirige vers une autre URL. contenant un caractère spécial "*". Ce caractère n'est pas géré correctement par Golang, qui l'a codé comme "*" au lieu de "%2A", ce qui a entraîné une réponse "403 Forbidden".

La solution est de modifier le programme pour gérer le caractère spécial correctement :

<code class="go">url := "https://docs.google.com/uc?export=download&id=0B2Q7X-dUtUBebElySVh1ZS1iaTQ"
fileName := "file.zip"
fmt.Println("Downloading file...")
output, err := os.Create(fileName)
defer output.Close()

url = strings.Replace(url, "%2A", "%252A", -1) // Replace * with its percent-encoded form

response, err := http.Get(url)</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal