php エディタ Xinyi では、FTP 経由でファイルをダウンロードし、ディスクに書き込むときに問題が発生することがあります。これは、ネットワーク接続の問題、不正な権限設定、またはディスク容量の不足が原因である可能性があります。この場合、ファイルを正常にダウンロードしてディスクに書き込むことができるように、これらの問題を注意深く確認して解決する必要があります。この記事では、考えられる解決策と一般的なエラーをいくつか検討し、それらを修正するための役立つヒントをいくつか紹介します。 FTP を初めて使用する場合でも、すでに FTP に慣れている場合でも、この情報は役に立ちます。
ディスクに書き込まれたファイルは空ですが、リーダーは空ではありません。
何が問題なのか分かりません。
Buffer
を使用してから String()
メソッドを使用してみたところ、コンテンツに問題がないことは確認できましたが、ライブラリの Read()
メソッドを使用すると問題が発生しました。仕事してないよ。
私が使用するライブラリは 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 }
Read は、読み取ったバイトを引数に入れます。 srcFile は nil スライスであるため、これはリーダーにゼロバイトを読み取るように指示します。すべてのバイトを読み取るには、ioutil.ReadAll を使用します。
次のステップは、Write の使用です。 Write(b)
最大 len(b) バイトまで書き込みますが、必ずしもすべてを書き込む必要はありません。戻り値を確認し、必要に応じて Write を繰り返し呼び出す必要があります。
ただし、あなたの場合、接続したいのは io.Reader (*Response は io.Reader を実装) と io.Writer (*os.File) だけです。これが io.Copy の目的です:
リーリー以上がFTP経由でダウンロードした後、ファイルをディスクに書き込むときに問題が発生するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。