Warum erhalte ich eine leere Datei „file.zip', wenn ich mit Golang öffentliche Dateien von Google Drive herunterlade?

Barbara Streisand
Freigeben: 2024-10-28 05:48:30
Original
629 Leute haben es durchsucht

Why am I getting a blank

Öffentliche Dateien von Google Drive mit Golang herunterladen

Problem

Programmierer, die versuchen, öffentliche Dateien mit Golang von Google Drive herunterzuladen, stoßen auf Probleme. Obwohl es eine gemeinsame öffentliche Datei gibt, führt der aktuelle Code dazu, dass eine leere Datei „file.zip“ erstellt wird.

<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>
Nach dem Login kopieren

Lösung

Bei der Untersuchung wurde festgestellt, dass die URL auf eine andere URL umleitet enthält ein Sonderzeichen „*“. Dieses Zeichen wird von Golang nicht korrekt verarbeitet, da es als „*“ anstelle von „%2A“ codiert wurde, was zu einer „403 Forbidden“-Antwort führte.

Die Lösung besteht darin, das Programm so zu ändern, dass es mit dem Sonderzeichen umgeht richtig:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine leere Datei „file.zip', wenn ich mit Golang öffentliche Dateien von Google Drive herunterlade?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!