FTP上传、下载(简单小例子)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net; namespace FTPConsoleApplication
{
class Program
{
static void Main(string[] args)
{
//测试
//DownloadFtp("优课.png");
//UploadFtp("FTPConsoleApplication.exe.config");
//SystemLog.logger("OK");
} public static FtpStatusCode UploadFileInFTP(string filename)
{
Stream requestStream = null;
FileStream fileStream = null;
FtpWebResponse uploadResponse = null;
FtpWebRequest uploadRequest = null;
string serverIP;
string userName;
string password;
string uploadurl; try
{
serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];
userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];
password = System.Configuration.ConfigurationManager.AppSettings["Password"];
uploadurl = "ftp://" + serverIP + "/" + Path.GetFileName(filename);
uploadRequest = (FtpWebRequest)WebRequest.Create(uploadurl);
uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
uploadRequest.Proxy = null;
NetworkCredential nc = new NetworkCredential();
nc.UserName = userName;
nc.Password = password;
uploadRequest.Credentials = nc;
requestStream = uploadRequest.GetRequestStream();
fileStream = File.Open(filename, FileMode.Open); byte[] buffer = new byte[];
int bytesRead; while (true)
{
bytesRead = fileStream.Read(buffer, , buffer.Length);
if (bytesRead == )
{
break;
}
requestStream.Write(buffer, , bytesRead);
} requestStream.Close();
uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
return uploadResponse.StatusCode;
}
catch (Exception e)
{
SystemLog.logger(e.InnerException.Message);
}
finally
{
if (uploadResponse != null)
{
uploadResponse.Close();
}
if (fileStream != null)
{
fileStream.Close();
}
if (requestStream != null)
{
requestStream.Close();
} }
return FtpStatusCode.Undefined;
} public static int UploadFtp(string filename)
{
FtpWebRequest reqFTP = null;
string serverIP;
string userName;
string password;
string url; try
{
FileInfo fileInf = new FileInfo(filename);
serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];
userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];
password = System.Configuration.ConfigurationManager.AppSettings["Password"];
url = "ftp://" + serverIP + "/" + Path.GetFileName(filename); reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
reqFTP.Credentials = new NetworkCredential(userName, password);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = fileInf.Length; int buffLength = ;
byte[] buff = new byte[buffLength];
int contentLen; FileStream fs = fileInf.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Stream strm = reqFTP.GetRequestStream(); contentLen = fs.Read(buff, , buffLength); while (contentLen != )
{ strm.Write(buff, , contentLen);
contentLen = fs.Read(buff, , buffLength);
} strm.Close();
fs.Close();
return ;
}
catch (Exception ex)
{
if (reqFTP != null)
{
reqFTP.Abort();
}
SystemLog.logger(ex.InnerException.Message);
return -;
}
} public static int DownloadFtp(string filename)
{
FtpWebRequest reqFTP;
string serverIP;
string userName;
string password;
string url; try
{
serverIP = System.Configuration.ConfigurationManager.AppSettings["FTPServerIP"];
userName = System.Configuration.ConfigurationManager.AppSettings["UserName"];
password = System.Configuration.ConfigurationManager.AppSettings["Password"];
url = "ftp://" + serverIP + "/" + Path.GetFileName(filename); FileStream outputStream = new FileStream(filename, FileMode.Create);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.KeepAlive = false;
reqFTP.Credentials = new NetworkCredential(userName, password);
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = ;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, , bufferSize);
while (readCount > )
{
outputStream.Write(buffer, , readCount);
readCount = ftpStream.Read(buffer, , bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
return ;
}
catch (Exception ex)
{
SystemLog.logger(ex.InnerException.Message);
return -;
}
} public class SystemLog
{ public static bool logger(string message)
{
try
{
DateTime timeNow = DateTime.Now;
string logPath = System.Configuration.ConfigurationManager.AppSettings["LogPath"];
string logSwitch = System.Configuration.ConfigurationManager.AppSettings["LogSwitch"];
if (logSwitch == "")
{
string logFullPath = Path.Combine(System.Environment.CurrentDirectory,logPath);
DirectoryInfo dirInfo = new DirectoryInfo(logFullPath);
if (!dirInfo.Exists)
{
dirInfo.Create();
} Encoding encoding = Encoding.GetEncoding("gb2312");
byte[] info = encoding.GetBytes("[ " + timeNow.ToString("yyyy-MM-dd HH:mm:ss") + " ] " + message + "\n"); //转换编码成字节串 if (!logPath.EndsWith(Path.DirectorySeparatorChar.ToString()))
{
logPath = logPath + Path.DirectorySeparatorChar.ToString();
} using (FileStream fs = System.IO.File.Open(logPath + timeNow.ToString("yyyy_MM_dd") + ".txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
fs.Write(info, , info.Length);
//以ASCII方式编写
using (StreamWriter w = new StreamWriter(fs, Encoding.ASCII))
{
w.Flush();
w.Close();
} fs.Close();
}
}
return true;
}
catch (Exception e)
{
return false;
}
}
} } }
FTP上传、下载(简单小例子)的更多相关文章
- JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)
package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...
- windows系统下ftp上传下载和一些常用命令
先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...
- windows下ftp上传下载和一些常用命令
先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...
- FTP上传下载工具(FlashFXP) v5.5.0 中文版
软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...
- 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)
前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...
- C# -- FTP上传下载
C# -- FTP上传下载 1. C#实现FTP下载 private static void TestFtpDownloadFile(string strFtpPath, string strFile ...
- Java.ftp上传下载
1:jar的maven的引用: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
- python之实现ftp上传下载代码(含错误处理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...
- python之模块ftplib(实现ftp上传下载代码)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块ftplib(实现ftp上传下载代码) #需求:实现ftp上传下载代码(不含错误处理) f ...
- java客户端调用ftp上传下载文件
1:java客户端上传,下载文件. package com.li.utils; import java.io.File; import java.io.FileInputStream; import ...
随机推荐
- BZOJ1819 [JSOI]Word Query电子字典 Trie
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1819 题意概括 字符串a与字符串b的编辑距离是指:允许对a或b串进行下列“编辑”操作,将a变为b或 ...
- SparseArray源码解析
转载自SparseArray源码解析 No1: Android官方推荐:当使用HashMap(K, V),如果K为整数类型时,使用SparseArray的效率更高. No2: HashMap是使用数组 ...
- P2376 [USACO09OCT]津贴Allowance
P2376 [USACO09OCT]津贴Allowance一开始想的是多重背包,但是实践不了.实际是贪心,让多c尽可能少,所以先放大的,最后让小的来弥补. #include<iostream&g ...
- Spring Boot 项目实战(二)集成 Logback
一.前言 上篇介绍了 Spring Boot Maven 多模块项目的搭建方法以及 MyBatis 的集成.通常在调试接口或者排查问题时我们主要借助于日志,一个设计合理的日志文件配置能大大降低我们的排 ...
- 前端解读面向切面编程(AOP)
前言 面向对象(OOP)作为经典的设计范式,对于我们来说可谓无人不知,还记得我们入行起始时那句经典的总结吗-万事万物皆对象. 是的,基于OOP思想封装.继承.多态的特点,我们会自然而然的遵循模块化.组 ...
- python新手总结(二)
random模块 随机小数 random uniform 随机整数 randint randrange 随机抽取 choice sample 打乱顺序 shuffle random.random() ...
- Orleans逐步教程
参考文档:https://dotnet.github.io/orleans/Tutorials/index.html 一.通过模板创建Orleans ①下载vs插件:https://marketpla ...
- html 音乐 QQ播放器 外链 代码 播放器 外链 代码
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha QQ播放器 外链 代码 播放器 外链 代码 ======== 歌曲链接 QQ播放器 外链 ...
- Java并发程序设计(五)JDK并发包之线程复用:线程池
线程复用:线程池 一.为什么需要线程池 为了避免系统频繁地创建和销毁线程,使用线程池让线程进行复用.(即创建线程变成了从线程池中获取空闲线程,销毁线程变成了把线程放回线程池中.) 二.JDK对线程池的 ...
- SVN解决本地版本控制与服务器版本冲突问题
最近经常遇到一个冲突问题,svn服务器已经没有这个文件,本地也没有这个文件,但是你提交代码的时候svn会显示冲突,也就是说本地svn仍然在管理着这个文件. 解决办法:在相应的目录下新建一个名字一样的文 ...