c# ftp 大文件上传 测试2g通过 ( 利用 ftprequest)

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;
using System.Net;

//ftp 大文件上传 1g往上
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       //利用ftpwebrequest获取输入流,然后往这个流里写要上传的文件。 需要引用system.net空间
        string filePath = "f:\\Svr_2008w_SP2_x86.ISO"; //要上传的文件路径。该文件2g
        string fileName = "Svr_2008w_SP2_x86.ISO";//要上传的文件名称
        string ftpPath = "ftp://111.111.11.111//";//ftp服务器地址
        string username = "test123";//用户名
        string password = "123456";//密码

        FtpWebRequest myRequest = (FtpWebRequest)WebRequest.Create(ftpPath + fileName);//创建ftp请求对象
        myRequest.Credentials = new NetworkCredential(username,password);//设置ftp通讯凭证
        myRequest.Proxy = null;//当你的机子使用的是代理上网时,最好加上这一行,要不然报“使用 HTTP 代理时不支持请求的 FTP 命令。”错误
        myRequest.Method = WebRequestMethods.Ftp.UploadFile;//上传
        //其他参数
        //myRequest.KeepAlive = true;
        //myRequest.UseBinary = true;
        //myRequest.UsePassive = true;

        Stream rStream = null;//ftp请求流
        try
        {
            rStream = myRequest.GetRequestStream();//创建ftp请求流
            FileStream fs = File.OpenRead(filePath);//io流

            int iCount = 2048;
            int iFlag = 0;//读入的字节数
            byte[] myBuffer = new byte[iCount];

            //这里用一个固定的长度2048,也可以改大一点,这里不要用要上传的文件的长度,因为如果文件过大,length的长度超出了int的范围。
            //而fs.Read和 rStream.Write 里面的参数是int类型的,过大就会出错
            do
            {
                iFlag = fs.Read(myBuffer, 0, iCount);
                rStream.Write(myBuffer, 0, iFlag);
            } while (iFlag != 0);

            fs.Close();
            rStream.Close();

            FtpWebResponse myResponse= (FtpWebResponse)myRequest.GetResponse();
            myResponse.Close();

            //参考http://msdn.microsoft.com/zh-cn/library/8exfzxft%28v=vs.90%29.aspx
            //待续
            //需要断点续传
            //需要验证md5值
            //需要关闭连接
        }
        catch (Exception ex)
        {
           
            throw;
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值