FTP経由でダウンロードした後、ファイルをディスクに書き込むときに問題が発生する

PHPz
リリース: 2024-02-08 22:30:21
転載
596 人が閲覧しました

通过 FTP 下载文件后将文件写入磁盘时出现问题

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
}
ログイン後にコピー

Solution

readwriteError:

を使用しています。 リーリー

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 サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!