【实例简介】

可以实现文件上传到服务器的功能

【实例截图】

【核心代码】

public int UpSound_Request(string address, string fileNamePath, string saveName, ProgressBar progressBar)

{

int returnValue = 0;

//要上传的文件

FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);

//二进制对象

BinaryReader r = new BinaryReader(fs);

//时间戳

string strBoundary = "----------" DateTime.Now.Ticks.ToString("x");

byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" strBoundary "\r\n");

//请求的头部信息

StringBuilder sb = new StringBuilder();

sb.Append("--");

sb.Append(strBoundary);

sb.Append("\r\n");

sb.Append("Content-Disposition: form-data; name=\"");

sb.Append("file");

sb.Append("\"; filename=\"");

sb.Append(saveName);

sb.Append("\";");

sb.Append("\r\n");

sb.Append("Content-Type: ");

sb.Append("application/octet-stream");

sb.Append("\r\n");

sb.Append("\r\n");

string strPostHeader = sb.ToString();

byte[] postHeaderBytes = Encoding.UTF8.GetBytes(strPostHeader);

// 根据uri创建HttpWebRequest对象

HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(address));

httpReq.Method = "POST";

//对发送的数据不使用缓存

httpReq.AllowWriteStreamBuffering = false;

//设置获得响应的超时时间(300秒)

httpReq.Timeout = 300000;

httpReq.ContentType = "multipart/form-data; boundary=" strBoundary;

long length = fs.Length postHeaderBytes.Length boundaryBytes.Length;

long fileLength = fs.Length;

httpReq.ContentLength = length;

try

{

progressBar.Maximum = int.MaxValue;

progressBar.Minimum = 0;

progressBar.Value = 0;

//每次上传4k

int bufferLength = 4096;

byte[] buffer = new byte[bufferLength]; //已上传的字节数

long offset = 0;         //开始上传时间

DateTime startTime = DateTime.Now;

int size = r.Read(buffer, 0, bufferLength);

Stream postStream = httpReq.GetRequestStream();         //发送请求头部消息

postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);

while (size > 0)

{

postStream.Write(buffer, 0, size);

offset = size;

progressBar.Value = (int)(offset * (int.MaxValue / length));

TimeSpan span = DateTime.Now - startTime;

double second = span.TotalSeconds;

labTime.Text = "已用时:" second.ToString("F2") "秒";

if (second > 0.001)

{

labSpeed.Text = "平均速度:" (offset / 1024 / second).ToString("0.00") "KB/秒";

}

else

{

labSpeed.Text = " 正在连接…";

}

labState.Text = "已上传:" (offset * 100.0 / length).ToString("F2") "%";

labSize.Text = (offset / 1048576.0).ToString("F2") "M/" (fileLength / 1048576.0).ToString("F2") "M";

Application.DoEvents();

size = r.Read(buffer, 0, bufferLength);

}

//添加尾部的时间戳

postStream.Write(boundaryBytes, 0, boundaryBytes.Length);

postStream.Close();

//获取服务器端的响应

WebResponse webRespon = httpReq.GetResponse();

Stream s = webRespon.GetResponseStream();

//读取服务器端返回的消息

StreamReader sr = new StreamReader(s);

String sReturnString = sr.ReadLine();

s.Close();

sr.Close();

if (sReturnString == "Success")

{

returnValue = 1;

}

else if (sReturnString == "Error")

{

returnValue = 0;

}

}

catch

{

returnValue = 0;

}

finally

{

fs.Close();

r.Close();

}

return returnValue;

}

c#+上传文件至服务器,C# 实现文件上传到服务器相关推荐

  1. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  2. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  3. Python实现阿里云aliyun服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 Python实现阿里云服务器里的文件上传与下载 背景: 正文: 预备环境: 构想: 实现: 注意: 结尾 018.4.15 背景: 老实说,因为现实的各 ...

  4. 文件上传服务器保存形式,78.上传文件及在服务器保存文件到任意路径

    上传文件到服务器是一个常用的操作,而在服务器上保存文件就需要多多用心了.因为你不可能只在一个路径里保存文件,所以需要实践一下保存文件到任意位置.当然,前提是你的应用程序有这样的操作权限. 首先建立一个 ...

  5. putty ubuntu服务器 上传文件,教你如何使用PuTTY上传文件?

    PuTTY是Windows和Unix平台的免费telnet和ssh客户端.该程序主要面向网络管理员和开发人员.该程序是高度可配置的,包括许多选项来调整连接.最初由SimonTatham为Windows ...

  6. Tomcat配置虚拟路径,使上传文件与服务器及工程文件分离开

    为什么80%的码农都做不了架构师?>>>    使用Tomcat虚拟路径可以达到一个怎样的效果呢?简单说你可以把上传的文件放在你想发的任何一个地方,同时可以自己区分 下文件的类型,图 ...

  7. html文件已传入服务器,把html文件上传到云服务器

    把html文件上传到云服务器 内容精选 换一换 为了实现通过NAT Server可使用SSH协议跳转到SAP HANA节点的功能,以及SAP HANA节点和NAT Server互相通过SSH协议跳转的 ...

  8. 怎么把数据文件上传云服务器,怎么把数据上传导云服务器

    怎么把数据上传导云服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数 ...

  9. winxp上传文件到服务器,通过SQLServer的xp_cmdshell在服务器之间传送文件

    xp_cmdshell作为sql Server的扩展存储过程之一,也是sql Server在安全大敌,很多sql安全手册上都要求关闭此过程,这不利用其特性简要实现了一个在sql服务器之间传取文件的功能 ...

  10. php程序怎么上传服务器,php本地文件上传到远程服务器

    利用curl实现把本地服务器的文件通过curl发送请求给远程服务器的php文件接受就实现了上传,还一个是利用ftp来上传方法也是php中的curl操作ftp服务器进行上传. 本地代码如下: heade ...

最新文章

  1. 数据结构和算法:(3)3.2.1单链表的整表创建
  2. 创建数据库指定编码集
  3. mysql安装教程8.0.22_mysql 8.0.22 安装配置方法图文教程
  4. Python四大金刚之四:集合
  5. 带前导0的数字三角形(洛谷P5721题题解,Java语言描述)
  6. Glassnode:比特币正迎来多年以来最大的流动性枯竭
  7. ASP.NET状态管理详解,让你明明白白
  8. ImageZoom 图片放大效果
  9. [Java]图书管理系统
  10. 推荐5款超实用的小软件,建议先收藏再下载
  11. AI 生成歌曲《醒来》(可试听)
  12. 零中频数字接收机原理
  13. rk3288-linux6.0移植
  14. 学python-学 Python 都用来干嘛的?
  15. Kotlin 编码规约
  16. 联想拯救者pro装华为鸿蒙OS,网友Mate 40 Pro+升级鸿蒙2.0:谷歌服务照样能用
  17. textarea 中的换行、空格; 如何处理
  18. 技术支持岗位面试问题汇总,绝对有你遇到的面试题!!
  19. LeetCode 416 分割等和子集
  20. ThinkPad T440p 更换实体三键触摸板

热门文章

  1. 万字详文阐释程序员修炼之道
  2. web一阶段 day13 阿里矢量图库的使用方法
  3. 页面置换算法(FIFOLRU)
  4. EverNote 极致的免费笔记资料管理软件 (数据网络同步、支持PC、Mac与手机多平台) 转自:http://www.iplaysoft.com/evernote.html
  5. linux设置ipsan_linux 配置IPSAN存储
  6. 鸿蒙第三代手机,华为第三代折叠屏手机面市 余承东披露今年4月旗舰机启用鸿蒙系统...
  7. Python 音频: 使用 sounddevice 调用 ASIO 声卡驱动
  8. 求2020 CFA二级notes资源,谢谢!
  9. css城市列表,js 获取全国城市列表方法
  10. Win7系统用键盘替代鼠标的小技巧