Das Hochladen der Datei auf Google Drive über die API schlägt fehl
php-Editor Xigua teilt Ihnen mit, dass es manchmal zu Fehlern kommen kann, wenn wir die API zum Hochladen von Dateien auf Google Drive verwenden. Diese Situation kann verschiedene Ursachen haben, z. B. Netzwerkprobleme, unzureichende Berechtigungen usw. Aber keine Sorge, wir können einiges tun, um dieses Problem zu beheben. Als Nächstes stellen wir Ihnen im Detail vor, wie Sie Dateien über die API erfolgreich auf Google Drive hochladen, damit sich niemand mehr um dieses Problem kümmern muss.
Frageninhalt
Ich versuche, eine Datei auf mein Google Drive hochzuladen, aber es schlägt fehl. Ich dachte, ich hätte den MIME-Typ richtig angegeben, weil ich festgestellt habe, dass dies ein häufiges Problem ist, aber es funktioniert bei mir immer noch nicht.
Über das Konvertierungssystem: Ich habe eine API für Gin-Gonic (v1.9.1), über die ich Dateien hochladen kann. Die Datei wurde erfolgreich vom Frontend/Postboten an die API übergeben, da ich die von der API erhaltene Datei erfolgreich speichern kann.
Der Fehler, den ich erhalte, ist:
Post "https://www.googleapis.com/upload/drive/v3/files?alt=json&prettyPrint=false&uploadType=multipart": Post "": unsupported protocol scheme ""
Ich habe folgende Funktion:
func (c *Client) UploadFile(oauthTokenConfig GoogleOauthTokenConfig, parentFolderId string, fileHeader *multipart.FileHeader) (*string, error) { svc, err := drive.NewService(context.Background(), option.WithHTTPClient( oauthTokenConfig.Config.Client( context.Background(), &oauth2.Token{ AccessToken: oauthTokenConfig.AccessToken, TokenType: oauthTokenConfig.TokenType, RefreshToken: oauthTokenConfig.RefreshToken, Expiry: oauthTokenConfig.ExpiresIn, }, )), ) if err != nil { return nil, err } fileExtension := filepath.Ext(fileHeader.Filename) fileName := strings.TrimSuffix(fileHeader.Filename, fileExtension) fileMimeType := fileHeader.Header.Get("Content-Type") uploadFileMetaData := drive.File{ Name: fmt.Sprintf("%s%s", fileName, fileExtension), // fmt.Sprintf("%s_%s%s", fileName, uuid.New().String(), fileExtension), Parents: []string{parentFolderId}, MimeType: fileMimeType, } file, err := fileHeader.Open() if err != nil { return nil, err } defer file.Close() fileResult, err := svc.Files. Create(&uploadFileMetaData). Media(file, googleapi.ContentType("text/plain")). Do() if err != nil { return nil, err // here I get the error } // ... }
Ich habe hier einen hartcodierten MIME-Typ hinzugefügt, aber die Variable fileMimeType
ist tatsächlich korrekt. Ich habe eine Test.txt-Datei hochgeladen, die den Inhalt von Test1 enthält (die auch erfolgreich erstellt wurde, als ich sie über Frontend/Postman verschickte). Ich habe auch versucht, den Datei-MIME-Typ dynamisch anzugeben oder den MIME-Typ überhaupt nicht anzugeben, erhalte aber immer das gleiche Ergebnis.
Ich verwende hierfür folgende Pakete:
- Go-Version:
go1.21.1 darwin/arm64
- go list -m golang.org/x/oauth2: v0.13.0
- go list -m google.golang.org/api: v0.147.0
- google.golang.org/api/drive/v3
- google.golang.org/api/googleapi
- google.golang.org/api/option
Herausgeber:
Ich habe auch das offizielle Beispiel von Google kopiert, aber es funktioniert immer noch nicht.
Problemumgehung
Der Fehler scheint mit der Authentifizierung zusammenzuhängen. Es ist etwas schwierig, aus diesem Fehler die ungültige Authentifizierung abzuleiten, aber ich musste den Aktualisierungsalgorithmus für das Aktualisierungstoken ein wenig ändern, damit es funktioniert.
<小时/>Das ist mein Arbeitscode. Beachten Sie, dass Sie vor dem Aufruf von UploadFile()
函数之前,我首先检查 oauthTokenConfig.ExpiresIn
prüfen, ob das Token noch gültig ist. Wenn ja, laden Sie die Datei hoch, andernfalls aktualisiere ich zuerst das Token.
Datei-Upload
func (c *Client) UploadFile(oauthTokenConfig GoogleOauthTokenConfig, parentFolderId string, file *multipart.FileHeader) (*string, error) { svc, err := drive.NewService(context.Background(), option.WithHTTPClient( oauthTokenConfig.Config.Client( context.Background(), &oauth2.Token{ AccessToken: oauthTokenConfig.AccessToken, TokenType: oauthTokenConfig.TokenType, RefreshToken: oauthTokenConfig.RefreshToken, Expiry: oauthTokenConfig.ExpiresIn, }, )), ) if err != nil { return nil, fmt.Errorf("failed to create drive-service: %s", err.Error()) } fileExtension := filepath.Ext(file.Filename) fileName := strings.TrimSuffix(file.Filename, fileExtension) uploadFile := drive.File{ Name: fmt.Sprintf("%s_%s%s", fileName, uuid.New().String(), fileExtension), Parents: []string{parentFolderId}, } fileContent, err := file.Open() if err != nil { return nil, fmt.Errorf("failed to open file: %s", err.Error()) } fileResult, err := svc.Files.Create(&uploadFile).Media(fileContent).Do() if err != nil { return nil, fmt.Errorf("failed to create file: %s", err.Error()) } uploadedFile, err := svc.Files.Get(fileResult.Id).Fields("webViewLink").Do() if err != nil { return nil, fmt.Errorf("failed to get file: %s", err.Error()) } return &uploadedFile.WebViewLink, nil }
Aktualisierungstoken
func (c *Client) RefreshToken(oauthTokenConfig GoogleOauthTokenConfig) (*GoogleOauthTokenConfig, error) { ctx := context.Background() config := oauth2.Config{ ClientID: c.ClientId, ClientSecret: c.ClientSecret, RedirectURL: oauthTokenConfig.Config.RedirectURL, Scopes: []string{"https://www.googleapis.com/auth/drive"}, Endpoint: google.Endpoint, } token := &oauth2.Token{ AccessToken: oauthTokenConfig.AccessToken, TokenType: oauthTokenConfig.TokenType, RefreshToken: oauthTokenConfig.RefreshToken, Expiry: oauthTokenConfig.ExpiresIn, } tokenSource := config.TokenSource(ctx, token) updatedToken, err := tokenSource.Token() if err != nil { return nil, err } return &GoogleOauthTokenConfig{ Config: config, AccessToken: updatedToken.AccessToken, RefreshToken: updatedToken.RefreshToken, ExpiresIn: updatedToken.Expiry, TokenType: updatedToken.TokenType, }, nil }
Das obige ist der detaillierte Inhalt vonDas Hochladen der Datei auf Google Drive über die API schlägt fehl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Um Netzwerkeinstellungen und Fehlerbehebung durchzuführen, müssen wir bei der Verwendung von Mobiltelefonen für den Zugriff auf das Internet häufig das Standard-Gateway des Mobiltelefons kennen. Und um den Lesern das Verständnis relevanter Kenntnisse und Vorgänge zu erleichtern, wird in diesem Artikel erläutert, wie das Standard-Gateway auf dem Mobiltelefon überprüft wird. 1. Was ist das Standard-Gateway? Es ist für das Senden von Datenpaketen vom lokalen Netzwerk an das Zielnetzwerk oder -gerät verantwortlich. Das Standard-Gateway ist der Kanal, der das lokale Netzwerk mit dem externen Netzwerk verbindet. 2. Die Bedeutung des Standard-Gateways bestimmt, wie Datenpakete das Mobiltelefon betreten und verlassen. Die Rolle des Standard-Gateways auf dem Mobiltelefon ähnelt der Tür eines Hauses. 3. Öffnen Sie die Telefoneinstellungen, suchen Sie auf dem Startbildschirm des Telefons nach „Einstellungen“ und klicken Sie, um die Einstellungsseite und das Anwendungssymbol aufzurufen. 4. Rufen Sie den Schiebebildschirm für die Netzwerkeinstellungen auf und klicken Sie auf der Einstellungsseite auf „Netzwerk und Internet“, um die Option aufzurufen. 5.

Baidu Netdisk-Download fehlgeschlagen 125201 Fehlergrund: Netzwerkprobleme: instabile/langsame Verbindung, Routerfehler, ausgelasteter Server Dateiprobleme: beschädigte/unvollständige Dateien, ungültige Links Baidu Netdisk-Einschränkungen: Download-Limit überschritten, Mitgliedschaft abgelaufen/Konto eingeschränkt. Browser-/Anwendungsprobleme: aus -aktuelle Version/schlechte Kompatibilität, Download-Manager-Fehler. Systemprobleme: Viren/Malware, fehlende Komponenten/Treiber

Die Gründe, warum Sie den Link auf Kuaishou nicht sehen können, können sein: Inhaltsverstöße, geografische Einschränkungen, Netzwerkprobleme, Browsereinstellungen, abgelaufene Links, unzureichende Berechtigungen oder technische Fehler. Zu den Lösungen gehören: Überprüfen Sie das Netzwerk, deaktivieren Sie Werbeblocker, ändern Sie die Zugriffsgeräte, kontaktieren Sie den Herausgeber, wenden Sie sich an den Administrator oder warten Sie, bis die Plattform repariert ist.

Nach dem King of Glory-Update wurden einige Spieler nach dem Betreten des Spiels ausgeschlossen. Ich weiß nicht, was passiert ist und wie man das Problem löst. Der Editor unten zeigt, dass die King of Glory-Datenressourcen beschädigt sind und Sie den Client neu starten müssen um die Ressourcen zu reparieren. Die Datenressourcen von Honor of Kings sind beschädigt. Sie müssen den Client neu starten, um dieses Problem zu lösen. Der erste Grund ist, dass die Version nicht vollständig aktualisiert wurde ein Spielfehler und der dritte könnte ein Netzwerkproblem sein. 1. Grund 1: Problem mit der Versionsaktualisierung. Wenn jedes Update abgeschlossen ist, deinstallieren Sie zuerst das Spiel und aktualisieren Sie dann die Vollversion erneut. 2. Grund 2: Spielfehler, die nach der Aktualisierung des Spiels auftreten. In diesem Fall können sie nur über die offizielle Website behoben werden.

Wenn ein Fehler im Netzwerk der EEX-Börse auftritt, können Sie ihn mit den folgenden Schritten beheben: Überprüfen Sie Ihre Internetverbindung. Browser-Cache leeren. Versuchen Sie es mit einem anderen Browser. Deaktivieren Sie Browser-Plugins. Kontaktieren Sie den Ouyi-Kundendienst.

Zu den Gründen für die langsame Download-Geschwindigkeit der mobilen Baidu Netdisk gehören: Netzwerkinstabilität, Serverüberlastung, Download-Einschränkungen, Software-Abfangen, unzureichender Speicher, niedrige Version und schlechte Gerätekompatibilität.

Zu den Gründen, warum sich OKX nicht anmelden kann, und seinen Lösungen gehören: Überprüfen Sie, ob die Netzwerkverbindung stabil ist, und versuchen Sie, zu einem anderen Netzwerk zu wechseln. Stellen Sie sicher, dass Benutzername und Passwort korrekt sind. Das Konto wurde möglicherweise aufgrund mehrfacher falscher Passworteingaben gesperrt. Bitte warten Sie eine gewisse Zeit, bevor Sie versuchen, sich erneut anzumelden. Leeren Sie den Cache und die Cookies Ihres Browsers und versuchen Sie, sich mit einem anderen Browser anzumelden. Möglicherweise werden an der Website Wartungsarbeiten durchgeführt. Bitte warten Sie, bis die Wartungsarbeiten abgeschlossen sind, und versuchen Sie es erneut. Konten können aufgrund von Verstößen gegen die Nutzungsbedingungen gesperrt oder deaktiviert werden. Bitte wenden Sie sich an den Kundendienst, um dies herauszufinden. Stellen Sie sicher, dass das Gerät die von OKX unterstützten Betriebssystem- und Geräteanforderungen erfüllt.

Es gibt verschiedene Gründe dafür, dass Sie sich nicht für die BitgetWallet-Börse registrieren können, darunter Kontobeschränkungen, nicht unterstützte Regionen, Netzwerkprobleme, Systemwartung und technische Ausfälle. Um sich für die BitgetWallet-Börse zu registrieren, besuchen Sie bitte die offizielle Website, geben Sie die Informationen ein, stimmen Sie den Bedingungen zu, schließen Sie die Registrierung ab und bestätigen Sie Ihre Identität.
