Golang语言 上传文件
时间:2022-05-04
本文章向大家介绍Golang语言 上传文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"time"
)
const (
filename = "c:\myetc\remote.etc"
)
func main() {
var servicefilepath string
var serviceIP string
var passwd string
var serviceusername string
var port string
//参数判断
if len(os.Args) == 1 {
fmt.Printf("usage: %s filename1 filename2 ...n", filepath.Base(os.Args[0]))
return
}
//打开之前应该判断文件是否存在
_, err := os.Stat(filename)
if err != nil {
log.Println("文件不存在!")
log.Println("设置的样例:c:\myetc\remote.etc"
log.Println("m_ta/m_ta@192.168.224.128:22:/home/m_ta/src")
return
}
f, err := os.Open(filename) //打开文件
//打开文件出错处理
defer func() {
f.Close()
}()
if nil == err {
buff := bufio.NewReader(f) //读入缓存
for {
line, err := buff.ReadString('n') //以'n'为结束符读入一行
if err != nil || io.EOF == err {
break
}
//如果是#开头的则认为是注释符
strings.Trim(line, " ")
if ok := strings.Contains(line, "#"); ok {
continue
}
//去回车换行符
//样例 m_ta/m_ta@192.168.224.128:22:/home/m_ta/src
splitstrings := strings.FieldsFunc(strings.Replace(line, "rn", "", -1), func(char rune) bool {
switch char {
case ':', '/', '@':
return true
}
return false
})
passwd, serviceusername, serviceIP, port = splitstrings[0], splitstrings[1], splitstrings[2], splitstrings[3]
servicefilepath = "/" + strings.Join(splitstrings[4:], "/")
}
parameter := serviceusername + "@" + serviceIP + ":" + servicefilepath
flag.Parse() // Scans the arg list and sets up flags
for i := 0; i < flag.NArg(); i++ {
cmd := exec.Command("pscp.exe", "-P", port, "-pw", passwd, flag.Arg(i), parameter)
err := cmd.Run()
if err != nil {
log.Print(err)
} else {
log.Print("OK!")
}
}
time.Sleep(1 * time.Second)
}
}
- codevs4919 线段树练习4
- 利用OpenCV和深度学习实现人脸检测
- 洛谷P2676 超级书架
- 洛谷P1720 月落乌啼算钱
- 2017.10.1解题报告
- 这个包绝对值得你用心体验一次!
- Python之函数的进阶(带参数的装饰器)
- 2017.10.2解题报告
- MVC 5 Scaffolder + EntityFramework+UnitOfWork Pattern 代码生成工具集成Visual Studio 2013
- 左手用R右手Python系列——百度地图API调用与地址解析/逆解析
- OpenCV实战:人脸关键点检测(FaceMark)
- Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)
- 模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板模板
- 洛谷P1311 选择客栈
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 词义类比与全局词共现信息不可兼得?基于飞桨实现的GloVe说可以
- MyBatis-plus乐观锁插件
- Jmeter(十九) - 从入门到精通 - JMeter监听器 -上篇(详解教程)
- python---rsa加密根据指数和模生成加密参数模板
- 搞了这么多年终于知道接口和抽象类的应用场景了
- css实现页面加载动画
- 用Dota2“最强”算法PPO完成CarPole和四轴飞行器悬浮任务
- 【pyspark】广播变量のdestroy...
- Flink 参数配置和常见参数调优
- 利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
- Netty之美--零拷贝
- Netty对ThreadLocal的升级
- 【避坑指南】12.2 新功能优化器统计顾问(Optimizer Statistics Advisor)及常见问题和解决方法
- 初试 Open Service Mesh(OSM)
- K8S 生态周报| runc v1.0-rc92 发布