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&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!