php小編新一,有時在透過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 }
解決方法
var srcFile []byte _, err = reader.Read(srcFile)
Read 將讀取的位元組放入其參數中。由於 srcFile 是一個 nil 切片,因此這表示讀取器讀取零位元組。使用 ioutil.ReadAll 讀取所有位元組。
接下來是 Write 的使用。 Write(b)
最多寫入 len(b) 個位元組,但不一定是全部。您必須檢查返回值,並在必要時重複呼叫 Write。
但是,在您的情況下,您只想連接 io.Reader (*Response 實作 io.Reader)和 io.Writer (*os.File)。這就是 io.Copy 的用途:
reader, err := client.Retr(path + file) dstFile, err := ioutil.TempFile("", fileID) _, err := io.Copy(dstFile, reader) err := dstFile.Close()
以上是透過 FTP 下載檔案後將檔案寫入磁碟時出現問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文解釋了GO的軟件包導入機制:命名imports(例如導入“ fmt”)和空白導入(例如導入_ fmt; fmt;)。 命名導入使包裝內容可訪問,而空白導入僅執行t

本文解釋了Beego的NewFlash()函數,用於Web應用程序中的頁間數據傳輸。 它專注於使用newflash()在控制器之間顯示臨時消息(成功,錯誤,警告),並利用會話機制。 Lima

本文詳細介紹了MySQL查詢結果的有效轉換為GO結構切片。 它強調使用數據庫/SQL的掃描方法來最佳性能,避免手動解析。 使用DB標籤和Robus的結構現場映射的最佳實踐

本文演示了創建模擬和存根進行單元測試。 它強調使用接口,提供模擬實現的示例,並討論最佳實踐,例如保持模擬集中並使用斷言庫。 文章

本文探討了GO的仿製藥自定義類型約束。 它詳細介紹了界面如何定義通用功能的最低類型要求,從而改善了類型的安全性和代碼可重複使用性。 本文還討論了局限性和最佳實踐

本文詳細介紹了在GO中詳細介紹有效的文件,將OS.WriteFile(適用於小文件)與OS.openfile和緩衝寫入(最佳大型文件)進行比較。 它強調了使用延遲並檢查特定錯誤的可靠錯誤處理。

本文使用跟踪工具探討了GO應用程序執行流。 它討論了手冊和自動儀器技術,比較諸如Jaeger,Zipkin和Opentelemetry之類的工具,並突出顯示有效的數據可視化


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),