go实现文件的上传
上传端
send.go
package main
import (
"fmt"
"io"
"net"
"os"
)
func main() {
fmt.Println("请输入要传输的文件")
var filePath string
fmt.Scan(&filePath)
info,err := os.Stat(filePath)
if err !=nil{
fmt.Println("获取文件属性失败")
}
conn,err := net.Dial("tcp","127.0.0.1:8000")
if err !=nil{
fmt.Println("连接服务器出错")
}
defer conn.Close()
_,err = conn.Write([]byte(info.Name()))
if err!=nil{
fmt.Println("发送文件名出错")
}
buff := make([]byte,1024)
n,err:= conn.Read(buff)
if err !=nil {
fmt.Println(err)
}
str := string(buff[:n])
if "ok" !=str{
fmt.Println("接收文件错误")
}
sendFile(filePath ,conn)
}
func sendFile(filePath string,conn net.Conn) {
buff := make([]byte,1024)
fileHandle,err := os.Open(filePath)//打开文件
if err!=nil{
if err == io.EOF{
fmt.Println("发送文件完毕")
}else{
fmt.Println("打开文件失败")
}
return
}
defer fileHandle.Close() //关闭文件
n,err := fileHandle.Read(buff)//读取文件内容
if err!=nil{
fmt.Println("读取文件失败")
return
}
conn.Write(buff[:n]);
}
接收端(服务器端)recive.go
package main import (
"fmt"
"io"
"net"
"os"
) func main() { lisener,err := net.Listen("tcp","127.0.0.1:8000")
if err !=nil{
fmt.Println("监听失败")
}
defer lisener.Close()
conn,err :=lisener.Accept()
defer conn.Close()
if err !=nil{
fmt.Println("连接失败")
}
buffer := make([]byte,1024)
n,err :=conn.Read(buffer)
if err!=nil{
fmt.Println("获取内容失败")
}
fileNme :=string(buffer[:n]) _,err = conn.Write([]byte("ok"))
if err !=nil{
fmt.Println("发送内容失败")
}
reciveFile(fileNme,conn) }
func reciveFile(filName string,conn net.Conn){
file,err := os.Create(filName)
if err!=err{
fmt.Println(err)
return
}
buff := make([]byte,1024)
for{ n,err := conn.Read(buff)
if err!=nil{
if err == io.EOF{
fmt.Println("文件接收完毕")
return
}else {
fmt.Println("读取内容失败")
}
}
if n==0{
fmt.Println("文件传输完毕")
return
}
_,err =file.Write([]byte(buff[:n]))
if err!=nil{
fmt.Println("写入文件失败")
} }
}
go实现文件的上传的更多相关文章
- 带进度条的文件批量上传插件uploadify
有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...
- C# 用原生JS进行文件的上传
1.此文章是用原生JS来进行文件的上传,有两个版本,一个不用ajax,一个用ajax. 1)非AJAX <!DOCTYPE html> <html> <head> ...
- ssh整合问题总结--在添加商品模块实现图片(文件)的上传
今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中: 完成这个功能需要两个步,第 ...
- 文件的上传(如何兼容火狐与IE)与国际化的原理
1.文件的上传 [1] 简介 > 将本地的文件上传到服务器中 > 用户需要通过一个表单将文件上传到服务器中 [2] 表单的设置 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- .Net多文件同时上传(Jquery Uploadify)
前提:领导给了我一个文件夹,里面有4000千多张产品图片,每张图片已产品编号+产品名称命名,要求是让我把4000多张产品图片上传到服务器端,而且要以产品编码创建n个文件夹,每张图片放到对应的文件夹下. ...
- mac下svn问题——“.a”(静态库)文件无法上传解决
mac下svn问题——“.a”(静态库)文件无法上传解决 “.a”(静态库)文件无法上传(svn工具:Versions) 网上查询了一下,说是Xcode自带的svn和Versi ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- struts—文件的上传和下载
设计了一个小的案例:上传图片到服务器,上传成功后显示图片列表,然后点击下载上传到服务器的图片. 注意表单的配置属性: <form enctype="multipart/Form-dat ...
随机推荐
- 笨方法学Python摘记(1)
编程新手所需的最重要的三种技能:读和写.注重细节.发现不同 不要复制粘贴! #-*-codinig:utf-8 -*- (脚本使用unicode UTF-8) 书写习惯:操作符的两边加上空格,提高代 ...
- LeetCode 223. 矩形面积(Rectangle Area)
223. 矩形面积 223. Rectangle Area 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. LeetCode2 ...
- [转帖]龙芯3A/3B3000通用处理器出货超30万 获得“中国芯”大奖
龙芯3A/3B3000通用处理器出货超30万 获得“中国芯”大奖 http://www.eetop.cn/cpu_soc/6946247.html 2019.10 的新闻 出后量 30万 我们贡献了 ...
- sql server版本特性简介、版本介绍简介
1.SQL Server 版本简介 1.1.sql server的版本信息 年 代 版 本 大版本号 1993年 SQL Server for Windows NT 4.21 1994年 ...
- Charles手机代理设置
Charles工具 手机 方法/步骤 1.打开Charles 点击Proxy,选择proxy settings,输入端口8888 打开电脑,在cmd中输入ipconfig,查看本地 ...
- cetos7 Mysql5.7安装
centos7 MySQL安装 一.检查是否已经存在mysql,若存在卸载,避免安装时产生一些错误 rpm -qa | grep -i mysql 若存在,使用rpm -e packname –nod ...
- HTML学习--基础知识
WEB a) 什么是WEB WEB,是基于Internet上的一种应用程序(网页应用程序),WEB页面,简称WEB页(网页),就是保存在服务器端上的一个具体的页面 b) WEB ...
- fastjson反序列化使用不当导致内存泄露
分析一个线上内存告警的问题时,发现了造成内存告警的原因是使用fastjson不当导致的. 分析dump发现com.alibaba.fastjson.util.IdentityHashMap$Entry ...
- easy ui 常用控件配置
table comboBox 下拉高度 panelHeight:'auto' textBox
- top 命令 详解
VIRT:virtual memory usage 虚拟内存 1.进程“需要的”虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m ...