Problem beim Herunterladen öffentlicher Google Drive-Dateien in Go
In diesem Artikel möchten wir ein Problem beheben, das beim Herunterladen öffentlich freigegebener ZIP-Dateien auftritt von Google Drive mit Go. Der unten bereitgestellte erste Codeausschnitt erstellt eine leere Datei mit dem Namen „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>
Untersuchung
Bei der Untersuchung wurde festgestellt, dass das Problem vorliegt liegt darin, wie Go die URL abruft. Wenn die ursprünglich angegebene URL direkt in einem Browser aufgerufen wird, wird sie zu einer zweiten URL weitergeleitet, die ein Sternchen (*) enthält. Allerdings kodiert Go das Sternchen als *, was von den Google-Systemen nicht als gültiges Trennzeichen erkannt wird.
Fehlererkennung
Es scheint, dass die URL-Verarbeitung von Go das Problem verursacht . Gemäß den Spezifikationen des URI-Schemas müssen reservierte Zeichen wie das Sternchen (*) für alternative Zwecke prozentual codiert werden. Während Google Drive die Umleitungs-URL korrekt generiert, verarbeitet die Go-Implementierung codierte reservierte Zeichen möglicherweise nicht wie erwartet.
Fazit
Das Problem entsteht aufgrund eines möglichen Fehlers in beiden Die Umleitungslogik von Google Drive oder die URL-Verwaltung von Go. Weitere Untersuchungen sind erforderlich, um die genaue Ursache zu ermitteln und den Verantwortlichen zu ermitteln. Die in der bereitgestellten Lösung bereitgestellte Problemumgehung ermöglicht jedoch einen erfolgreichen Dateidownload von Google Drive.
Das obige ist der detaillierte Inhalt vonWarum führt das Herunterladen öffentlicher Google Drive-Dateien in Go zu einer leeren Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!