Heim >Backend-Entwicklung >Golang >Problem beim Schreiben der Datei auf die Festplatte nach dem Herunterladen per FTP
php-Editor Xinyi, manchmal können beim Herunterladen von Dateien über FTP und beim Schreiben auf die Festplatte Probleme auftreten. Dies kann auf Netzwerkverbindungsprobleme, falsche Berechtigungseinstellungen oder unzureichenden Speicherplatz zurückzuführen sein. In diesem Fall müssen wir diese Probleme sorgfältig prüfen und beheben, um sicherzustellen, dass die Datei erfolgreich heruntergeladen und auf die Festplatte geschrieben werden kann. In diesem Artikel untersuchen wir einige mögliche Lösungen und häufige Fehler und geben einige hilfreiche Tipps zu deren Behebung. Ganz gleich, ob Sie FTP noch nicht kennen oder bereits damit vertraut sind, diese Informationen werden für Sie hilfreich sein.
Die auf die Festplatte geschriebene Datei ist leer, aber der Reader ist nicht leer.
Ich verstehe nicht, was das Problem ist.
Ich habe es mit der Buffer
然后使用 String()
方法,我可以确认内容没问题,但是使用该库的 Read()
-Methode versucht, die jedoch nicht funktioniert hat.
Die Bibliothek, die ich verwende, ist github.com/jlaffaye/ftp
// pullFileByFTP func pullFileByFTP(fileID, server string, port int64, username, password, path, file string) error { // Connect to the server client, err := ftp.Dial(fmt.Sprintf("%s:%d", server, port)) if err != nil { return err } // Log in the server err = client.Login(username, password) if err != nil { return err } // Retrieve the file reader, err := client.Retr(fmt.Sprintf("%s%s", path, file)) if err != nil { return err } // Read the file var srcFile []byte _, err = reader.Read(srcFile) if err != nil { return err } // Create the destination file dstFile, err := os.Create(fmt.Sprintf("%s/%s", shared.TmpDir, fileID)) if err != nil { return fmt.Errorf("Error while creating the destination file : %s", err) } defer dstFile.Close() // Copy the file dstFile.Write(srcFile) return nil }
Sie verwenden Lesen und SchreibenFehler:
var srcFile []byte _, err = reader.Read(srcFile)
Read fügt die gelesenen Bytes in sein Argument ein. Da srcFile ein Null-Slice ist, weist dies den Leser an, null Bytes zu lesen. Verwenden Sie ioutil.ReadAll, um alle Bytes zu lesen.
Der nächste Schritt ist die Verwendung von Write. Write(b)
Schreiben Sie höchstens len(b) Bytes, aber nicht unbedingt alle. Sie müssen den Rückgabewert überprüfen und ggf. wiederholt Write aufrufen.
In Ihrem Fall möchten Sie jedoch nur io.Reader (*Response implementiert io.Reader) und io.Writer (*os.File) verbinden. Dafür ist io.Copy da:
reader, err := client.Retr(path + file) dstFile, err := ioutil.TempFile("", fileID) _, err := io.Copy(dstFile, reader) err := dstFile.Close()
Das obige ist der detaillierte Inhalt vonProblem beim Schreiben der Datei auf die Festplatte nach dem Herunterladen per FTP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!