linux远程读取go文件,golang通过ssh实现远程文件传输

使用ssh远程操作文件, 主要是创建ssh, 直接上代码

import (

"fmt"

"github.com/pkg/sftp"

"golang.org/x/crypto/ssh"

"net"

"strconv"

"time"

)

func SftpConnect(user, password, host string, port int) (sftpClient *sftp.Client, err error) { //参数: 远程服务器用户名, 密码, ip, 端口

auth := make([]ssh.AuthMethod, 0)

auth = append(auth, ssh.Password(password))

clientConfig := &ssh.ClientConfig{

User: user,

Auth: auth,

Timeout: 30 * time.Second,

HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {

return nil

},

}

addr := host + ":" + strconv.Itoa(port)

sshClient, err := ssh.Dial("tcp", addr, clientConfig) //连接ssh

if err != nil {

fmt.Println("连接ssh失败", err)

return

}

if sftpClient, err = sftp.NewClient(sshClient); err != nil { //创建客户端

fmt.Println("创建客户端失败", err)

return

}

return

}

使用也很简单

d6126b95fb9cd02b1f6d1cabf0a5c4da.png

sftpClient.Open() 返回的是*sftp.File, 操作和官方库差不多

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang中,可以通过使用`net/http`包来读取前端传输的文件内容。 首先,服务端需要设置一个HTTP路由处理函数来接收前端传输的文件。这可以通过使用`http.HandleFunc()`函数来实现。在路由处理函数中,可以使用`request.ParseMultipartForm()`函数来解析前端发送的multipart/form-data类型的表单数据。 示例代码如下所示: ```go package main import ( "net/http" "fmt" ) func fileHandler(w http.ResponseWriter, r *http.Request) { err := r.ParseMultipartForm(32 << 20) // 设置最大文件大小为32MB if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } file, _, err := r.FormFile("file") // 获取文件内容 if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer file.Close() // 处理文件内容,例如保存至本地或上传至云端 // ... fmt.Fprint(w, "文件上传成功") } func main() { http.HandleFunc("/upload", fileHandler) http.ListenAndServe(":8080", nil) } ``` 在上述代码中,`fileHandler`函数用于处理前端传输的文件数据。通过调用`r.FormFile("file")`可以获取到文件的内容。接下来,你可以根据具体的需求对文件内容进行处理,例如保存至本地或上传至云端。 最后,通过调用`http.HandleFunc()`函数设置服务器的路由处理函数,并使用`http.ListenAndServe()`函数监听指定的端口,等待客户端的请求。 这样,当前端向服务端发送文件内容时,服务端可以通过上述代码读取并处理文件内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值