WebClient方法本身没有提供设定http请求响应超时时间的方法,我们需要重写该该类的GetWebRequest
方法,代码如下。
类名为 CGMWebClient.cs
可以根据自己的要求修改
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
public partial class CsvDataUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strResponse = "";
try
{
strResponse = UpFileData();
}
catch (Exception ex)
{
strResponse = ex.ToString();
}
Response.Write(strResponse);
// Response.Write(UPdataData());
}
/// <summary>
/// 文件上传处理
/// </summary>
/// <returns></returns>
public string UpFileData()
{
string strRet = "";
if (Request.InputStream.Length == 0)
{
//没有内容
strRet = "没有上传文件,文件长度是0。";
return strRet;
}
string strFileName = Convert.ToString(Request["fileName"]);
if (string.IsNullOrEmpty(strFileName))
{
strRet = "文件名称错误,文件上传失败。";
return strRet;
}
string strRoot = BaseComm.CommSub.GetServerPath() + "\\Updata\\";
if (!System.IO.Directory.Exists(strRoot))
{
System.IO.Directory.CreateDirectory(strRoot);
}
strRoot += strFileName.Substring(0, 8) + "\\";
if (!System.IO.Directory.Exists(strRoot))
{
System.IO.Directory.CreateDirectory(strRoot);
}
strRoot += strFileName;
if (System.IO.File.Exists(strRoot))
{
System.IO.File.Delete(strRoot);
}
System.IO.File.WriteAllBytes(strRoot, StreamToBytes(Request.InputStream));
return "文件【" + strFileName + "】上传完成。";
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* Stream 和 byte[] 之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将 Stream 转成 byte[]
/// </summary>
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// 将 byte[] 转成 Stream
/// </summary>
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}
}
C/S端用户提交数据的测试方法方法1:
(里面有几个类需要引入,自己引入一下就可以了
)
/// <summary>
/// 上传字符长到指定服务器测试函数
/// </summary>
/// <returns></returns>
public static string UpdataStringTest()
{
//提交已知文本
//服务器上传Url地址(需要改成你自己本地的服务器地址,具体代码会在下面给出)
string strUrl = "http://www.my400800.cn";
string strRet = "";//返回值
string strFileName = "20100702_0000_0059.csv";//服务器端保存用文件名
string strUploadCvsText = @"百度
,http://www.baidu.com,192.168.0.12,2010-07-02 08:00:01
google
,http://www.google.com.hk,192.168.0.20,2010-07-02 08:00:01
400电话
,http://www.my400800.cn,192.168.0.11,2010-07-02 08:00:10
电话
,http://www.tel4006.com,192.168.0.122010-07-02 08:00:12
中国移动
,http://www.chinamobile.com,192.168.0.23,2010-07-02 08:00:30
淘宝
,http://www.taobao.com,192.168.0.81,2010-07-02 08:00:60"; //需要上传的文本内容
CGMWebClient wc = new CGMWebClient();
wc.Timeout = 10 * 60;//10分钟
//用默认编码转换网页内容
Encoding encoding = Encoding.GetEncoding("utf-8");
if (strUploadCvsText.Length > 10)//文件长度小于10时不上传文件
{
byte[] buffer = wc.UploadData(strUrl + "?fileName=" + strFileName, encoding.GetBytes(strUploadCvsText));
strRet = encoding.GetString(buffer);
strRet = strRet.Replace(" ", "").Replace("\r\n", "");
}
else
{
strRet = "【" + strFileName + "】没有可上传数据。";
}
return strRet;
}
C/S端用户提交数据的测试方法方法2:
(里面有几个类需要引入,自己引入一下就可以了
)
/// <summary>
/// 上传指定文件到Web服务器测试函数
/// </summary>
/// <returns></returns>
public static string UpdataFileWebServerTest()
{
//提交已知文本
//服务器上传Url地址(需要改成你自己本地的服务器地址,具体代码会在下面给出)
string strUrl = "http://www.my400800.cn";
string strRet = "";//返回值
string strFileName = "20100702_0000_0059.rar";//服务器端保存用文件名
string strUpFilePath = "E:/test.rar";//你本地文件存放路径,需要根据自己的需求修改
CGMWebClient wc = new CGMWebClient();
wc.Timeout = 10 * 60;//10分钟
if (!System.IO.File.Exists(strUpFilePath))//文件长度小于10时不上传文件
{
//用默认编码转换网页内容
Encoding encoding = Encoding.GetEncoding("utf-8");
//文件读取
byte[] readFileByteArr = System.IO.File.ReadAllBytes("strUpFilePath");
byte[] buffer = wc.UploadData(strUrl + "?fileName=" + strFileName, readFileByteArr);
strRet = encoding.GetString(buffer);
strRet = strRet.Replace(" ", "").Replace("\r\n", "");
}
else
{
strRet = "【" + strFileName + "】没有可上传数据。";
}
return strRet;
}
web端代码(iis6.0,asp.net 2.0)
CsvDataUpload.aspx.cs
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
public partial class CsvDataUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strResponse = "";
try
{
strResponse = UpFileData();
}
catch (Exception ex)
{
strResponse = ex.ToString();
}
Response.Write(strResponse);
// Response.Write(UPdataData());
}
/// <summary>
/// 文件上传处理
/// </summary>
/// <returns></returns>
public string UpFileData()
{
string strRet = "";
if (Request.InputStream.Length == 0)
{
//没有内容
strRet = "没有上传文件,文件长度是0。";
return strRet;
}
string strFileName = Convert.ToString(Request["fileName"]);
if (string.IsNullOrEmpty(strFileName))
{
strRet = "文件名称错误,文件上传失败。";
return strRet;
}
string strRoot = BaseComm.CommSub.GetServerPath() + "\\Updata\\";
if (!System.IO.Directory.Exists(strRoot))
{
System.IO.Directory.CreateDirectory(strRoot);
}
strRoot += strFileName.Substring(0, 8) + "\\";
if (!System.IO.Directory.Exists(strRoot))
{
System.IO.Directory.CreateDirectory(strRoot);
}
strRoot += strFileName;
if (System.IO.File.Exists(strRoot))
{
System.IO.File.Delete(strRoot);
}
System.IO.File.WriteAllBytes(strRoot, StreamToBytes(Request.InputStream));
return "文件【" + strFileName + "】上传完成。";
}
/* - - - - - - - - - - - - - - - - - - - - - - - -
* Stream 和 byte[] 之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将 Stream 转成 byte[]
/// </summary>
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// 将 byte[] 转成 Stream
/// </summary>
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}
}
CsvDataUpload.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CsvDataUpload.aspx.cs" Inherits="CsvDataUpload" %>
分享到:
相关推荐
在C#中,可以通过设置`HttpWebRequest.CachePolicy`来控制缓存行为。例如,设置为`RequestCacheLevel.Reload`可以强制重新加载数据,忽略缓存: ```csharp HttpWebRequest request = (HttpWebRequest)WebRequest....
### C# WebClient 上传文件知识点解析 #### 一、引言 在开发过程中,经常会遇到需要将客户端的文件上传到服务器的需求。C#语言提供了多种方法来实现这一功能,其中`WebClient`类就是一种非常简便的方式。本文将详细...
本程序就主要是通过C# 中的WebClient 类实现对文件的下载功能,其中涉及到进度条,对下载成功与下载失败都会给出相应的提示,本程序是通过VS 2005 开发的,希望给需要在项目中用到下载这个功能的人有所帮助!...
本资料包“基于C#的WebAPI断点续传几种方式及WebClient断点续传下载.zip”主要探讨了两种在C#环境下实现断点续传的方法:一是通过WebAPI实现服务端的断点续传功能,二是使用WebClient类进行客户端的断点续传下载。...
总结来说,C#中的WebClient类为开发者提供了方便地下载网络资源的能力。通过订阅DownloadProgressChanged和DownloadFileCompleted事件,我们可以实现下载进度和速度的实时显示,以及下载完成后的提示。同时,利用...
总结来说,`WebClient`类在C#中提供了简便的文件上传和下载功能。通过设置HTTP头、处理进度事件和错误检查,我们可以实现高效且用户友好的文件传输功能。在处理大量或大文件时,合理地使用异步操作和流处理可以显著...
在C#编程中,WebClient类是一个非常实用的工具,用于执行HTTP请求,特别是下载文件。在用户界面中展示下载进度条是提升用户体验的重要手段,特别是在处理大文件时。本篇将详细介绍如何使用WebClient下载文件并同时...
在C#中,要使用`WebClient`,你需要引入`System.Net`命名空间: ```csharp using System.Net; ``` 接着,你可以创建`WebClient`对象实例,然后调用其`DownloadString`方法来下载指定URL的HTML源代码。例如,要下载...
C#实现IIS服务器下载文件 本文将详细介绍如何使用C#语言实现IIS服务器下载文件的功能。通过使用WebClient类和FileStream类,可以实现高抽象程度的Internet通讯服务,并将网络文件下载到本地。 一、概述 本文通过...
在C#编程环境中,开发一个HTTP文件上传客户端是一项常见的任务,尤其在构建Web应用程序或集成API接口时。本文将深入探讨如何使用C#实现在HTTP协议基础上的文件上传功能,并展示上传进度,确保程序的正确运行。 首先...
在C#中,我们通常使用ASP.NET来创建Web服务,它支持SOAP(简单对象访问协议)和RESTful API两种主要的通信模式。在本例中,我们将构建一个SOAP Web Service,它接收客户端上传的视频文件,并将其保存到服务器虚拟机...
总之,利用C#的WebClient类上传文件到IIS是一项常见的任务,通过理解HTTP协议和WebClient类的工作原理,我们可以方便地实现在Web应用程序中与服务器进行数据交互。对于大型项目,还可以考虑使用更高级的库,如...
总结来说,"C# Web文件下载类"是针对C#环境下的Web文件下载需求而设计的一个实用工具,它封装了HTTP请求和响应的处理,提供了下载进度跟踪、错误处理等附加功能,使得开发者能够更加便捷、高效地实现文件下载。...
通过这个例子,你可以了解到C#中使用WebClient类进行文件下载的基本步骤,以及如何处理异步操作的进度和完成事件。这对于开发需要从网络获取数据的应用程序非常有用,例如下载文件、抓取网页内容等。在实际项目中,...
在这个"C#通过WebClient下载demo"中,我们将深入探讨如何使用`WebClient`来实现文件的下载,并关注如何在下载过程中显示进度。 `WebClient`类位于`System.Net`命名空间下,它提供了异步和同步方法来处理网络请求。...
总结一下,C#中的`WebClient`和`FileStream`类是实现文件下载的核心工具。通过`WebClient`的`DownloadFile`或`OpenRead`方法,结合`FileStream`的读写操作,我们可以方便地从网络下载文件到本地。同时,可以利用事件...
c# 实现文件FTP上传至服务器 WebClient上传文件至服务器(不带进度条) 要上传的文件(全路径格式) <param name="strUrlDirPath">Web服务器文件夹路径 <returns>True/False是否上传成功</returns>
总结,`WebClient.DownloadFileAsync`是C#中异步下载文件的一种简便方法,适合新手学习。通过理解异步编程的基本原理,注册适当的事件处理程序,你可以创建更高效的C#应用程序。在实际项目中,记得根据需求选择合适...
在C#中,可以使用HTTP客户端库如HttpClient或WebClient来发送文件到各个服务器。负载均衡可以通过第三方工具如Nginx或应用内部逻辑来实现,根据预设规则将文件分发到不同服务器。 其次,“多文件上传”涉及到批量...