分类:
FTP
ftp 上传下载:
这里的配置文件为 bin的名称.dll.config
具体如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.IO;
using System.Net;
namespace _ftp
{
public class AgreementTools
{
string ftpServerIP;
string ftpPort;
string ftpUserID;
string ftpPassword;
string sUploadPath;
string sFTPUri;
FtpWebRequest reqFTP;
/// <summary>
/// 上传文件到ftp
/// </summary>
/// <param name="sfilepath">上传路径</param>
/// <param name="filename">上传的文件名</param>
/// <param name="read">上传的文件方式</param>
/// <returns></returns>
public string FTP_UPFILE(string sfilepath, string filename)
{
string res = true;
try
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
//读取配置文件的信息
map.ExeConfigFilename = System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Replace(@"file:///", string.Empty) + ".config";
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
ftpServerIP = conf.AppSettings.Settings["FTPServer"].Value.ToString();
ftpPort = conf.AppSettings.Settings["FTPPort"].Value.ToString();
ftpUserID = conf.AppSettings.Settings["FTPUser"].Value.ToString();
ftpPassword = conf.AppSettings.Settings["FTPPass"].Value.ToString();
sUploadPath = conf.AppSettings.Settings["UploadPath"].Value.ToString();
sFTPfilepath = conf.AppSettings.Settings["ftpfilepath"].Value.ToString() + filename;
// 根据uri创建FtpWebRequest对象
string sUri = "ftp://" + ftpServerIP + ":" + ftpPort + "/" + sUploadPath + "/" + sFTPfilepath;
FileInfo fileInf = new FileInfo(sfilepath);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(sUri));
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
// after a command is executed.
reqFTP.KeepAlive = false;
// Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// Specify the data transfer type.
reqFTP.UseBinary = true;
// Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;
// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
FileStream fs = fileInf.OpenRead();
// Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();
try
{
// Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// Close the file stream and the Request Stream
strm.Close();
fs.Close();
//删除文件
System.IO.File.SetAttributes(sfilepath, System.IO.FileAttributes.Normal);
fileInf.Delete();
}
catch (Exception ex1)
{
strm.Close();
fs.Close();
}
}
catch (Exception ex)
{
res = ex.Message;
return res;
}
return res;
}
/// <summary>
/// 下载ftp文件
/// </summary>
/// <param name="sfilepath">下载文件的文件名或者相对路径;配置下文件名</param>
/// <param name="sSavefilepath">保存文件的绝对路径</param>
/// <returns></returns>
public bool FTP_DOWNFILE(string sfilepath, string sSavefilepath)
{
bool res = true;
try
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
//获取配置文件信息
map.ExeConfigFilename = System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Replace(@"file:///", string.Empty) + ".config";
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
ftpServerIP = conf.AppSettings.Settings["FTPServer"].Value.ToString();
ftpPort = conf.AppSettings.Settings["FTPPort"].Value.ToString();
ftpUserID = conf.AppSettings.Settings["FTPUser"].Value.ToString();
ftpPassword = conf.AppSettings.Settings["FTPPass"].Value.ToString();
sUploadPath = conf.AppSettings.Settings["UploadPath"].Value.ToString();
//filePath = <<The full path where the file is to be created.>>,
//fileName = <<Name of the file to be created(Need not be the name of the file on FTP server).>>
string sFTPfilepath = "";
if (read == "read")
{
sFTPfilepath = conf.AppSettings.Settings["ftpfilepathread"].Value.ToString();
}
else
{
sFTPfilepath = conf.AppSettings.Settings["ftpfilepath"].Value.ToString();
}
// 根据uri创建FtpWebRequest对象
string sUri = "ftp://" + ftpServerIP + ":" + ftpPort + "/" + sUploadPath + "/" + sFTPfilepath + "/" + sfilepath;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(sUri));
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
FileStream outputStream = new FileStream(sSavefilepath, FileMode.Create);
Stream ftpStream = response.GetResponseStream();
try
{
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex1)
{
ftpStream.Close();
outputStream.Close();
response.Close();
}
}
catch (Exception ex)
{
return false;
}
return res;
}
}
}评价
