
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;
- }
- }
-
- }
评价