上传端

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实现文件的上传的更多相关文章

  1. 带进度条的文件批量上传插件uploadify

    有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...

  2. C# 用原生JS进行文件的上传

    1.此文章是用原生JS来进行文件的上传,有两个版本,一个不用ajax,一个用ajax. 1)非AJAX <!DOCTYPE html> <html> <head> ...

  3. ssh整合问题总结--在添加商品模块实现图片(文件)的上传

    今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中: 完成这个功能需要两个步,第 ...

  4. 文件的上传(如何兼容火狐与IE)与国际化的原理

    1.文件的上传     [1] 简介         > 将本地的文件上传到服务器中         > 用户需要通过一个表单将文件上传到服务器中       [2] 表单的设置     ...

  5. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  6. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

  7. .Net多文件同时上传(Jquery Uploadify)

    前提:领导给了我一个文件夹,里面有4000千多张产品图片,每张图片已产品编号+产品名称命名,要求是让我把4000多张产品图片上传到服务器端,而且要以产品编码创建n个文件夹,每张图片放到对应的文件夹下. ...

  8. mac下svn问题——“.a”(静态库)文件无法上传解决

    mac下svn问题——“.a”(静态库)文件无法上传解决    “.a”(静态库)文件无法上传(svn工具:Versions)          网上查询了一下,说是Xcode自带的svn和Versi ...

  9. SecureCRT使用sz和rz命令进行文件的上传和下载

    SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...

  10. struts—文件的上传和下载

    设计了一个小的案例:上传图片到服务器,上传成功后显示图片列表,然后点击下载上传到服务器的图片. 注意表单的配置属性: <form enctype="multipart/Form-dat ...

随机推荐

  1. UOJ269 清华集训2016 如何优雅地求和 下降幂多项式、NTT

    代码 神仙题? 看到连续的点值,那么一定是要利用到连续点值的性质,可以考虑下降幂多项式,即考虑多项式\(F(x) = \sum\limits_{i=0}^m a_ix^{\underline i}\) ...

  2. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

  3. 深度优先搜索(DFS)思路及算法分析

    1.算法用途: 用于遍历图中的节点,有些类似于树的深度优先遍历.这里唯一的问题是,与树不同,图形可能包含循环,因此我们可能会再次来到同一节点. 2.主要思想: 借用一个邻接表和布尔类型数组(判断一个点 ...

  4. Unity3D 跨平台原理

    Unity3D的跨平台原理核心在于对指令集CIL(通用中间语言)的应用. 机理 首先需要知道,Unity中的Mono是基于 通用语言架构(Common Language Infrastructure, ...

  5. java之struts2之拦截器

    1.struts2能完成数据的设置,数据的封装,数据的类型转换,数据的校验等等.struts2是如何来完成这些功能的?struts2的所有功能都是由拦截器来完成的. 2.拦截器是struts2的核心. ...

  6. IdentityServer4实现OAuth2.0四种模式之客户端模式

    一,准备内容 IdentityServer4 是Asp.net core的一个中间件,用于添加符合OpenId Connect和OAuth2.0规范的终端到Asp.net Core应用.在这里简单介绍 ...

  7. 四 python中关于OOP的常用术语

    抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现这种模型.抽象不仅包括这种模型的数据属性,还定义了这些数据的接口. 对某种抽象的实现 ...

  8. Java 之 Stream 流

    Stream流 在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端 一.传统遍历 1.传统集合的多步遍历代码 几乎所有的集合(如 ...

  9. JAVA - 普通类读取WEB-INF里面配置文件

    服务器:Tomcat 9 注意问题:配置文件应该放入Tomcat的正式工程目录中测试. 可用代码: package com.daoen.rtis.test; import java.io.FileRe ...

  10. Jmeter学习笔记(十三)——xpath断言

    1.什么是XPath断言 XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力. Ap ...