本人现在在做开发,要用到FTP传送文件,因为是第一次使用FTP不是很清楚,所以请高手大侠来相助一下~
问题:在文件传送之前先获得文件的大小,文件传送后再获得传送后服务器上的文件大小,然后比较传送前后文件是否完整,
若传送后的文件大小与传送前部一样,就删除掉已经传送到服务器上的文件 。
我的问题就 2 个:
1 ,如何获得传送后服务器上的文件大小
2 ,如何删除掉已经传送到服务器上的文件
本人使用的开发环境为 C# 2003 版 ~ 感激不尽 !
问题:在文件传送之前先获得文件的大小,文件传送后再获得传送后服务器上的文件大小,然后比较传送前后文件是否完整,
若传送后的文件大小与传送前部一样,就删除掉已经传送到服务器上的文件 。
我的问题就 2 个:
1 ,如何获得传送后服务器上的文件大小
2 ,如何删除掉已经传送到服务器上的文件
本人使用的开发环境为 C# 2003 版 ~ 感激不尽 !
解决方案 »
- c#怎么满足多个事件
- imageList控件对imageBox放进图片时出现问题
- vs2005中,调用某个页面问题
- 请问在C# 下如何使用内存映射文件以及怎么使用?
- 通过System.Reflection.Assembly.LoadFrom加载一个程序集后,如何释放?
- 请教各位高手一个通信问题
- FileInfo问题string [] Filter=new string[]{".htm",".html",".shtm",".shtml",".jsp",".php",".asp",".aspx",".txt"}如何只让带有数组里
- 打印问题
- 控件编写问题(救命啊)
- AJAX 怎么做FTP上传进度条
- 100分献上,求WCF服务器端和客户端的交互实例
- PowerDesigner设计数据库
ftp命令
size filename2 ,如何删除掉已经传送到服务器上的文件
ftp命令
dele filename
这些命令我是知道的,就是不太明白那个 filename 具体该如何赋值
我的 远程FTP服务器是 :192.168.1.14 ,上传文件夹是:E:\UpLoad\
用户名:sa 密码:sa ,文件上传是可以的
贴一段我的那个代码吧:
public void Delete(string strFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("DELE "+strFileName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}
就请你直接告诉我 strFileName 该给个什么值吧,呵呵 ~
你的这个建议给我提了一个醒
IO类的File 用是用过,不过都是针对本地的文件进行的操作,对远程机器上的文件做删除操作没试过,不知道行不行,今天下班了,明天试过之后再回复你~ 谢谢你的建议
参考http://blog.chinaunix.net/u/17663/showart_1901733.html
按照这句话,我给我那个方法的 :
// Delete(string strFileName)
string uri = "ftp://192.168.1.14/UpLoad/abc.txt";
Delete(uri);
这样试过了之后不行,又试着把 /UpLoad 换成 E$/UpLoad 也不行,我无语了你介绍的那个参考,应该是 VS2005及以上版本的,可惜我们公司现在用的是 2003 ,无奈
还请继续指教 ~ 等回复 ~
/// FTPでファイル転送
/// </summary>
public class FTP
{
public FTP()
{
strRemoteHost = "";
strRemotePath = "";
strRemoteUser = "";
strRemotePass = "";
strRemotePort = 21;
bConnected = false;
}
public FTP(string remoteHost, string remotePath, string remoteUser, string remotePass, int remotePort)
{
strRemoteHost = remoteHost; // 遠程主機/IP
strRemotePath = remotePath; // 遠程ファイルパス
strRemoteUser = remoteUser; // 遠程登録ユーザー
strRemotePass = remotePass; // 遠程登録パスワード
strRemotePort = remotePort; // 遠程登録端口
Connect();
}
/// <summary>
/// FTPSVのIP_Address
/// </summary>
private string strRemoteHost;
public string RemoteHost
{
get
{
return strRemoteHost;
}
set
{
strRemoteHost = value;
}
}
/// <summary>
/// FTPSVの端口
/// </summary>
private int strRemotePort;
public int RemotePort
{
get
{
return strRemotePort;
}
set
{
strRemotePort = value;
}
}
/// <summary>
/// 当前SVのディレクトリ
/// </summary>
private string strRemotePath;
public string RemotePath
{
get
{
return strRemotePath;
}
set
{
strRemotePath = value;
}
}
/// <summary>
/// 登録ユーザー
/// </summary>
private string strRemoteUser;
public string RemoteUser
{
set
{
strRemoteUser = value;
}
}
/// <summary>
/// 登録パスワード
/// </summary>
private string strRemotePass;
public string RemotePass
{
set
{
strRemotePass = value;
}
}
/// <summary>
/// 登録か?
/// </summary>
private Boolean bConnected;
public bool Connected
{
get
{
return bConnected;
}
}
/// 接続建つ
/// </summary>
public void Connect()
{
socketControl = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(RemoteHost), strRemotePort);
try
{
socketControl.Connect(ep);
}
catch(Exception)
{
throw new IOException("Couldn't connect to remote server");
}
ReadReply();
if(iReplyCode != 220)
{
DisConnect();
throw new IOException(strReply.Substring(4));
}
SendCommand("USER "+strRemoteUser);
if( !(iReplyCode == 331 || iReplyCode == 230) )
{
CloseSocketConnect();
throw new IOException(strReply.Substring(4));
}
if( iReplyCode != 230 )
{
SendCommand("PASS "+strRemotePass);
if( !(iReplyCode == 230 || iReplyCode == 202) )
{
CloseSocketConnect();
throw new IOException(strReply.Substring(4));
}
}
bConnected = true;
ChDir(strRemotePath);
}
/// <summary>
/// 接続閉め
/// </summary>
public void DisConnect()
{
if( socketControl != null )
{
SendCommand("QUIT");
}
CloseSocketConnect();
}
/// <summary>
/// 転送模式:Binary,ASCII
/// </summary>
public enum TransferType {Binary,ASCII};
/// <summary>
/// 転送模式設定
/// </summary>
public void SetTransferType(TransferType ttType)
{
if(ttType == TransferType.Binary)
{
SendCommand("TYPE I");//Binary
}
else
{
SendCommand("TYPE A");//ASCII
}
if (iReplyCode != 200)
{
throw new IOException(strReply.Substring(4));
}
else
{
trType = ttType;
}
}
/// <summary>
/// 転送模式取る
/// </summary>
public TransferType GetTransferType()
{
return trType;
}
/// <summary>
/// ファイルリスト取る
/// </summary>
public string[] Dir(string strMask)
{
if(!bConnected)
{
Connect();
}
Socket socketData = CreateDataSocket(); SendCommand("NLST " + strMask);
if(!(iReplyCode == 150 || iReplyCode == 125 || iReplyCode == 226))
{
throw new IOException(strReply.Substring(4));
}
strMsg = "";
while(true)
{
int iBytes = socketData.Receive(buffer, buffer.Length, 0);
strMsg += ASCII.GetString(buffer, 0, iBytes);
if(iBytes < buffer.Length)
{
break;
}
}
char[] seperator = {'\n'};
string[] strsFileList = strMsg.Split(seperator);
socketData.Close();
if(iReplyCode != 226)
{
ReadReply();
if(iReplyCode != 226)
{
throw new IOException(strReply.Substring(4));
}
}
return strsFileList;
}
/// <summary>
/// ファイルサイズ取る
/// </summary>
public long GetFileSize(string strFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("SIZE " + Path.GetFileName(strFileName));
long lSize=0;
if(iReplyCode == 213)
{
lSize = Int64.Parse(strReply.Substring(4));
}
else
{
throw new IOException(strReply.Substring(4));
}
return lSize;
}
/// <summary>
/// ファイル削除
/// </summary>
public void Delete(string strFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("DELE "+strFileName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}
/// <summary>
/// 再命名
/// </summary>
public void Rename(string strOldFileName,string strNewFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("RNFR "+strOldFileName);
if(iReplyCode != 350)
{
throw new IOException(strReply.Substring(4));
}
SendCommand("RNTO "+strNewFileName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}