Maison  >  Article  >  développement back-end  >  Pourquoi le téléchargement de fichiers publics Google Drive dans Go génère-t-il un fichier vide ?

Pourquoi le téléchargement de fichiers publics Google Drive dans Go génère-t-il un fichier vide ?

DDD
DDDoriginal
2024-10-29 01:19:02934parcourir

Why Does Downloading Public Google Drive Files in Go Result in an Empty File?

Problème de téléchargement de fichiers publics Google Drive dans Go

Dans cet article, nous visons à résoudre un problème rencontré lors du téléchargement de fichiers zip partagés publiquement. depuis Google Drive en utilisant Go. L'extrait de code initial, fourni ci-dessous, crée un fichier vierge nommé "file.zip" :

<code class="go">package main

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

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, "-", eerrror)
        return
    }
    defer response.Body.Close()

    n, err := io.Copy(output, response.Body)

    fmt.Println(n, "bytes downloaded")
}</code>

Enquête

Après enquête, il a été découvert que le problème réside dans la façon dont Go récupère l'URL. L'URL d'origine fournie, lorsqu'elle est visitée directement dans un navigateur, redirige vers une deuxième URL contenant un astérisque (*). Cependant, Go code l'astérisque sous la forme *, que les systèmes de Google ne reconnaissent pas comme un délimiteur valide.

Identification des bogues

Il semble que la gestion des URL par Go soit à l'origine du problème. . Selon les spécifications du schéma URI, les caractères réservés comme l'astérisque (*) doivent être codés en pourcentage à d'autres fins. Bien que Google Drive génère correctement l'URL de redirection, l'implémentation de Go peut ne pas gérer les caractères réservés codés comme prévu.

Conclusion

Le problème survient en raison d'un bug potentiel dans l'un ou l'autre La logique de redirection de Google Drive ou la gestion des URL de Go. Une enquête plus approfondie est nécessaire pour déterminer la cause exacte et identifier le responsable. Cependant, la solution de contournement fournie dans la solution fournie permet de télécharger avec succès les fichiers depuis Google Drive.

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