> 백엔드 개발 > Golang > FTP를 통해 다운로드한 후 디스크에 파일을 쓰는 중 문제 발생

FTP를 통해 다운로드한 후 디스크에 파일을 쓰는 중 문제 발생

PHPz
풀어 주다: 2024-02-08 22:30:21
앞으로
631명이 탐색했습니다.

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

php 편집기 Xinyi, 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

ReadWrite을 사용하고 있습니다.오류:

으아악

Read는 읽은 바이트를 인수에 넣습니다. srcFile은 nil 슬라이스이므로 판독기에게 0바이트를 읽도록 지시합니다. 모든 바이트를 읽으려면 ioutil.ReadAll을 사용하세요.

다음 단계는 쓰기를 사용하는 것입니다. Write(b) 최대 len(b) 바이트를 쓰지만 전부는 아닙니다. 반환 값을 확인하고 필요한 경우 Write를 반복적으로 호출해야 합니다.

그러나 귀하의 경우에는 io.Reader(*Response가 io.Reader를 구현함)와 io.Writer(*os.File)만 연결하려고 합니다. io.Copy의 용도는 다음과 같습니다.

으아악

위 내용은 FTP를 통해 다운로드한 후 디스크에 파일을 쓰는 중 문제 발생의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿