winfrom文件上传
winfrom怎么实现文件上传功能,并可同时上传多个文件,如果能像迅雷那样断点上传更好,请个位高手指点
[解决办法]
use win socket
or
web service
or
remoting
[解决办法]
ftp也可以
[解决办法]
我也想知道!
[解决办法]
用ftp吧
简单
而且不用自己定义协议和边界
系统比较稳定
服务器方不用开发,直接使用成熟的ftp服务器就行了
这个感觉最好
[解决办法]
你若不是写一个很强的独立产品,最好直接采用Ftp协议,
客户端使用异步操作。
[解决办法]
关注一下
[解决办法]
ftp
or
net use \\远程机器IP 密码 /user:用户名
file.copy( "\\远程机器IP\d.txt ", "d:\d.txt ");
[解决办法]
web的要吗?
[解决办法]
C#实现ftp上传下载
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Net.Sockets;
namespace FTP_GET_PUT{
/// <summary>
/// FTPClient 的摘要说明。
/// </summary>
public class FTPClient
{ #region 构造函数
/// <summary>
/// 缺省构造函数
/// </summary>
public FTPClient()
{
strRemoteHost = " ";
strRemotePath = " ";
strRemoteUser = " ";
strRemotePass = " ";
strRemotePort = 21;
bConnected = false;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name= "remoteHost "> </param>
/// <param name= "remotePath "> </param>
/// <param name= "remoteUser "> </param>
/// <param name= "remotePass "> </param>
/// <param name= "remotePort "> </param>
public FTPClient(string remoteHost, string remotePath, string remoteUser, string remotePass, int remotePort )
{
strRemoteHost = remoteHost;
strRemotePath = remotePath;
strRemoteUser = remoteUser;
strRemotePass = remotePass;
strRemotePort = remotePort;
Connect();
}
#endregion #region 登陆
/// <summary>
/// FTP服务器IP地址
/// </summary>
private string strRemoteHost;
public string RemoteHost
{
get
{
return strRemoteHost;
}
set
{
strRemoteHost = value;
}
}
/// <summary>
/// FTP服务器端口
/// </summary>
private int strRemotePort;
public int RemotePort
{
get
{
return strRemotePort;
}
set
{
strRemotePort = value;
}
}
/// <summary>
/// 当前服务器目录
/// </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;
}
}
#endregion #region 链接
/// <summary>
/// 建立连接
/// </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();
} #endregion #region 传输模式 /// <summary>
/// 传输模式:二进制类型、ASCII类型
/// </summary>
public enum TransferType {Binary,ASCII}; /// <summary>
/// 设置传输模式
/// </summary>
/// <param name= "ttType "> 传输模式 </param>
public void SetTransferType(TransferType ttType)
{
if(ttType == TransferType.Binary)
{
SendCommand( "TYPE I ");//binary类型传输
}
else
{
SendCommand( "TYPE A ");//ASCII类型传输
}