Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-10-28 05:48:30715parcourir

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>

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>

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:
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