如何在golang中通过ssh将文件从服务器发送到客户端?

问题描述 投票:0回答:1

我正在使用 wishbubbletea 创建一个应用程序并通过 ssh 发送它。该应用程序只有我所做的事情,一个 github 链接,以及我所坚持的一点,一个下载。然后它将转到 https://raw.githubusercontent.com///main/ 或者它将转到releases。它将获取数据,然后通过 ssh 将其发送到客户端,我可以看到文件的内容以文本形式显示在客户端上。但我不知道如何在用户端创建一个文件并将文件的内容放入其中。我在互联网上找不到有关从服务器发送到客户端的任何内容,仅将客户端发送到服务器。我只是不知道如何在客户端执行代码(创建文件并将数据放入其中)。有什么解决办法吗?预先感谢。

func (m *model) downloadFile(url string) {
    // Get the file from the URL
    resp, err := http.Get(url)
    if err != nil {
        m.status = fmt.Sprintf("Failed to download: %v\n", err)
        m.Session.Write([]byte(m.status))
        return
    }
    defer resp.Body.Close()

    // Check if the request succeeded
    if resp.StatusCode != http.StatusOK {
        m.status = fmt.Sprintf("HTTP Error: %v\n", resp.Status)
        m.Session.Write([]byte(m.status))
        return
    }

    // Notify user of file transfer
    m.Session.Write([]byte("Starting file transfer..."))

    // Copy file data to the SSH session
    _, err = io.Copy(m.Session, resp.Body)
    if err != nil {
        m.status = fmt.Sprintf("Error sending file: %v\n", err)
        m.Session.Write([]byte(m.status))
        return
    }

    // Notify the user that the transfer is complete
    m.Session.Write([]byte("\nFile transfer complete!\n"))
    m.status = "Download completed!\n"
}

go ssh
1个回答
0
投票

您不能“强制”在客户端创建文件。您应该创建一个下载可能性,客户端可以下载他的“内容”。

© www.soinside.com 2019 - 2024. All rights reserved.