using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Net;
using System.Text;
using System.Configuration;

namespace DlnOffice.general.netdisk
{
public partial class fileupload2 : System.Web.UI.Page
{

//这三个常量是从webconfig获取
private string ftpServerIP = ConfigurationManager.AppSettings["ftpServerIP"];
private string ftpUserID = ConfigurationManager.AppSettings["ftpUserID"];
private string ftpPassword = ConfigurationManager.AppSettings["ftpPassword"];
protected void Page_Load(object sender, EventArgs e)
{

}
protected void LinkButton1_Click(object sender, EventArgs e)
{
up_FTP(FileUpload1);
//up_FTP(FileUpload2);
Response.Write("<script>alert('完成');window.location.href ='fileupload2.aspx'</script>");

//else
//{
// Response.Write("<script>alert('未选择文件');</script>");
// return;
//}
}

public void up_FTP(FileUpload fu)
{
string AppPath = (base.Request.QueryString["parent_folder"] != null) ? base.Request.QueryString["parent_folder"].ToString() : "/信息科/常用软件";
if (string.IsNullOrEmpty(AppPath))
{
base.Response.Redirect("index.aspx");
return;
}
//文件上传地址根目录,这里通过IIS架设本地主机为FTP服务器
//string FileSaveUri = @"ftp://127.0.0.1/";
string FileSaveUri = @"ftp://" + ftpServerIP + AppPath + "/";
//FTP用户名密码,就是本机的用户名密码
string ftpUser = ftpUserID;
string ftpPassWord = ftpPassword;
Stream requestStream = null;
Stream fileStream = null;
FtpWebResponse uploadResponse = null;//创建FtpWebResponse实例uploadResponse
//Btn_Upload.
if (fu.HasFile)
{
//获取文件长度
int FileLength = fu.PostedFile.ContentLength;
//限制上传文件最大不能超过1G
if (FileLength < 1024 * 1024 * 1024)
{
try
{

//格式化为URI
Uri uri = new Uri(FileSaveUri + Path.GetFileName(fu.PostedFile.FileName));
FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uri);//创建FtpWebRequest实例uploadRequest
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;//将FtpWebRequest属性设置为上传文件
uploadRequest.Credentials = new NetworkCredential(ftpUser, ftpPassWord);//认证FTP用户名密码
requestStream = uploadRequest.GetRequestStream();//获得用于上传FTP的流
byte[] buffer = new byte[FileLength];
fileStream = fu.PostedFile.InputStream;//截取FileUpload获取的文件流,作为上传FTP的流
fileStream.Read(buffer, 0, FileLength);
requestStream.Write(buffer, 0, FileLength);//将buffer写入流
requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();//返回FTP服务器响应,上传完成
//上传成功

}
catch (Exception ex)
{
//无法上传
Response.Write("<script>alert('无法上传');</script>");
return;
}
finally
{
if (uploadResponse != null)
uploadResponse.Close();
if (fileStream != null)
fileStream.Close();
if (requestStream != null)
requestStream.Close();
}
}//end if #FileLength#
else
{
//上传文件过大
Response.Write("<script>alert('上传文件过大,文件不得超过1G');</script>");
return;
}
}//end if #FileUpload.HasFile#
else
{
//未选择文件
return;
}
}
}
}

.net ftp上传文件方法的更多相关文章

  1. Java ftp上传文件方法效率对比

    Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...

  2. 再看ftp上传文件

    前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...

  3. FTP 上传文件

    有时候需要通过FTP同步数据文件,除了比较稳定的IDE之外,我们程序员还可以根据实际的业务需求来开发具体的工具,具体的开发过程就不细说了,这里了解一下通过C#实现FTP上传文件到指定的地址. /// ...

  4. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  5. C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误

    FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...

  6. PHP使用FTP上传文件到服务器(实战篇)

    我们在做开发的过程中,上传文件肯定是避免不了的,平常我们的程序和上传的文件都在一个服务器上,我们也可以使用第三方sdk上传文件,但是文件在第三方服务器上.现在我们使用PHP的ftp功能把文件上传到我们 ...

  7. .net FTP上传文件

    FTP上传文件代码实现: private void UploadFileByWebClient() { WebClient webClient = new WebClient(); webClient ...

  8. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  9. FTP上传文件到服务器

    一.初始化上传控件. 1.我们这里用dropzone.js作为上传控件,下载地址http://www.dropzonejs.com/ 2.这里我们使用一个div元素作为dropzone载体. < ...

随机推荐

  1. Postgres-XL集群搭建

    Postgres-XL 是一个完全满足ACID的.开源的.可方便进行水平扩展的.多租户安全的.支持share-nothing;支持海量数据并行处理-MPP(Massively Parallel Pro ...

  2. Shell 字符串比较

    转自网络 Shell字符串比较 收藏 Shell 中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等. 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. --- ...

  3. Unity-Animator深入系列---Foot IK

    回到 Animator深入系列总目录 最近在做一个demo,遇到了角色跑动不自然的问题(注意双腿): 后来得知勾选FootIK之后Unity会智能修复这类问题: 好像这个功能还能做到斜面地形匹配,不过 ...

  4. 递归,动态规划,找最短路径,Help Jimmy

    题目链接:http://poj.org/problem?id=1661 解题报告: 1.老鼠每次来到一块木板上都只有两条路可以走,可以使用递归 #include <stdio.h> #in ...

  5. linux 帮助命令

    帮助命令 man(manual) 可以用来查看1 命令 2 配置文件 格式 man ls 1 查看命令 看第一行NAME 如果要看-l ,那么直接输入/-l 2 查看配置文件 man 查看配置文件信息 ...

  6. mean函数

    求平均值 th> a=torch.zeros(,) [.0002s] th> a [torch.DoubleTensor of size 1x3] [.0003s] th> a[{, ...

  7. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A

    Description You are given names of two days of the week. Please, determine whether it is possible th ...

  8. 2016年11月15日 星期二 --出埃及记 Exodus 20:6

    2016年11月15日 星期二 --出埃及记 Exodus 20:6 but showing love to a thousand of those who love me and keep my c ...

  9. 循环嵌套,while循环,穷举迭代循环

    一.循环嵌套 简单的就是说,在一个for循环里嵌入多个小for循环. 其中,在打矩形.三角形和乘法口诀表之类的题目中,大for循环一般表示的是行数,其余的小for循环式每一行中的内容. 二.while ...

  10. 蚂蚁运输(ant)

    蚂蚁运输(ant)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 在观察一些蚂蚁.蚂蚁想要积攒一些货物来过冬.积攒货物的方法是这样的.对于第i只蚂蚁, 它要 ...