C# http post上传文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Threading; namespace HttpUploadTest
{
class Program
{
//static string m_address = "http://localhost:50000";
static string m_address = "http://210.73.221.45:50000";
static void FileUpload(object m_fileNamePath)
{
DateTime start = DateTime.Now; // 要上传的文件
FileStream oFileStream = new FileStream(m_fileNamePath.ToString(), FileMode.Open, FileAccess.Read);
BinaryReader oBinaryReader = new BinaryReader(oFileStream); // 根据uri创建HttpWebRequest对象
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(new Uri(m_address));
httpReq.Method = "POST"; //对发送的数据不使用缓存
httpReq.AllowWriteStreamBuffering = false; //设置获得响应的超时时间(半小时)
httpReq.Timeout = 300000;
//httpReq.Timeout = 5000;
// httpReq.ReadWriteTimeout = 150000;
httpReq.KeepAlive = true;
httpReq.ProtocolVersion = HttpVersion.Version11; httpReq.ContentType = "application/pdf";
long filelength = oFileStream.Length;
httpReq.SendChunked = true;
//在将 AllowWriteStreamBuffering 设置为 false 的情况下执行写操作时,必须将 ContentLength 设置为非负数,或者将 SendChunked 设置为 true。 //每次上传4k
int bufferLength = 4*1024;
byte[] buffer = new byte[bufferLength]; //已上传的字节数
long offset = 0; //开始上传时间
DateTime startTime = DateTime.Now;
int size = oBinaryReader.Read(buffer, 0, bufferLength);
Stream postStream = httpReq.GetRequestStream(); while (size > 0)
{
postStream.Write(buffer, 0, size);
offset += size;
size = oBinaryReader.Read(buffer, 0, bufferLength);
//Console.Write(".");
}
//Console.WriteLine(".");
postStream.Flush();
postStream.Close(); //获取服务器端的响应
WebResponse webRespon = httpReq.GetResponse();
Stream s = webRespon.GetResponseStream();
StreamReader sr = new StreamReader(s);
DateTime end = DateTime.Now;
TimeSpan ts = end - start;
//读取服务器端返回的消息
String sReturnString = sr.ReadLine();
Console.WriteLine("retcode="+sReturnString+" 花费时间="+ts.TotalSeconds.ToString());
s.Close();
sr.Close();
} static void Main(string[] args)
{
string filePath = "D:\\test";
string[] ary = Directory.GetFiles(filePath);
for (int i = 0; i < (int)ary.Count(); i++)
{
Thread oneProcess = new Thread(new ParameterizedThreadStart(FileUpload));
oneProcess.Priority = ThreadPriority.AboveNormal;
oneProcess.Start(ary[i]);
oneProcess.IsBackground = false;
}
}
}
}
C# http post上传文件的更多相关文章
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- 三种上传文件不刷新页面的方法讨论:iframe/FormData/FileReader
发请求有两种方式,一种是用ajax,另一种是用form提交,默认的form提交如果不做处理的话,会使页面重定向.以一个简单的demo做说明: html如下所示,请求的路径action为"up ...
- asp.net mvc 上传文件
转至:http://www.cnblogs.com/fonour/p/ajaxFileUpload.html 0.下载 http://files.cnblogs.com/files/fonour/aj ...
- app端上传文件至服务器后台,web端上传文件存储到服务器
1.android前端发送服务器请求 在spring-mvc.xml 将过滤屏蔽(如果不屏蔽 ,文件流为空) <!-- <bean id="multipartResolver&q ...
- .net FTP上传文件
FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- 前端之web上传文件的方式
前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...
- Django session cookie 上传文件、详解
session 在这里先说session 配置URL from django.conf.urls import patterns, include, url from django.contrib i ...
- 4 django系列之HTML通过form标签来同时提交表单内容与上传文件
preface 我们知道提交表单有2种方式,一种直接通过submit页面刷新方法来提交,另一种通过ajax异步局部刷新的方法提交,上回我们说了通过ajax来提交文件到后台,现在说说通过submit来提 ...
- 1. Django系列之Django与ajax上传文件
html代码如下: <div class="form-group"> <label for="exampleInputFile">附件上 ...
随机推荐
- 探讨"点"语法的奥秘
点语法 一直以来,都不理解什么是点语法,都说是相当于链接或是路径.也许我浏览的信息量少吧,看过好几篇有关的博文,没什么记载,本篇只是初步见解分析. 在javascript里,属性和方法都使用“点”语法 ...
- springboot部署在云服务器上
1.window云服务器上 在本地的SpringBoot的根目录下 mvn clean package 打包jar 在云服务上安装jdk 将jar拷贝到云服务器上 在jar包所在的相应的位置,执行ja ...
- 项目发布后 Tomcat中只有web-INF文件夹
这是有文件夹没有加载 解决办法如下
- 如何在repeater中找到checkbox并实现全选删除
checkbox使用客户端控件,且给repeater里边的checkbox添加ruanat=server属性表头中的chkTotal的属性一定不要加此属性....然后 全选的javascript代码 ...
- Stm32F103面向对象编程之GPIO
STM32F103 GPIO面向对象变成实例 创建一个GPIO对象 GpioClass gStateLed = NEW_GPIO(C, 0, GPIO_Mode_Out_PP); 初始化对象 Gpio ...
- IPFS星际节点网站 IPNS域名解析教程
IPNS星际文件系统IPFS提供的域名命名空间,相当于经典HTTP协议中的DNS.只不过是,IPNS是将内容寻址的哈希值(HASH值)转换为域名,而DNS是将IP地址转换为域名. 前段时间,IPFS协 ...
- asp.net core 发布 不打包cshtml 文件
需要在 FolderProfile.pubxml 文件中添加 FolderProfile.pubxml <MvcRazorCompileOnPublish>false</MvcRaz ...
- codeforces27D Ring Road 2
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Codeforces Round #341 (Div. 2) C. Mike and Chocolate Thieves 二分
C. Mike and Chocolate Thieves time limit per test 2 seconds memory limit per test 256 megabytes inpu ...
- Mac下配置NDK环境
下载NDK 这里写图片描述配置NDK开发环境 第一步:打开Mac终端 Snip20170208_1.png 第二步:在终端中输入:open -e .bash_profile,打开.bash_profi ...