有谁开发过这样的项目,给我一点思路,
有谁能告诉我上传类在什么地方有的下。。

解决方案 »

  1.   

    Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
    Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
    Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
    Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Long
    Public Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    Public Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    Public Declare Function FtpDeleteFile Lib "wininet.dll" Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, ByVal lpszFileName As String) As Boolean
    Public Declare Function FtpRenameFile Lib "wininet.dll" Alias "FtpRenameFileA" (ByVal hFtpSession As Long, ByVal lpszExisting As String, ByVal lpszNew As String) As Boolean
    Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Boolean
    Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
    Public Declare Function InternetGetLastResponseInfo Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, ByVal lpszBuffer As String, lpdwBufferLength As Long) As Boolean
    Public Declare Function FtpFindFirstFile Lib "wininet.dll" Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, ByVal lpszSearchFile As String, lpFindFileData As WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent As Long) As Long
    Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
    Public Declare Function InternetWriteFile Lib "wininet.dll" (ByVal hFile As Long, ByRef sBuffer As Byte, ByVal lNumBytesToWite As Long, dwNumberOfBytesWritten As Long) As Integer
    Public Declare Function FtpOpenFile Lib "wininet.dll" Alias "FtpOpenFileA" (ByVal hFtpSession As Long, ByVal sBuff As String, ByVal Access As Long, ByVal Flags As Long, ByVal Context As Long) As Long
    'Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    'UPDATE DECLARE
    Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByRef sBuffer As Byte, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    Public Declare Function LoByte Lib "TLBINF32" Alias "lobyte" (ByVal Word As Integer) As Byte
    Public Declare Function HiByte Lib "TLBINF32" Alias "hibyte" (ByVal Word As Integer) As Byte
    Public Declare Function loword Lib "TLBINF32" (ByVal DWord As Long) As Integer
    Public Declare Function hiword Lib "TLBINF32" (ByVal DWord As Long) As Integer这么多函数够用了吧
      

  2.   

    不如自己从socket实现。移植和维护也好些。就是工作量比较大。
      

  3.   

    web服务 也可以实现在winform里引用web服务 [WebMethod]
    public byte[] DownLoad()
    {
    byte[] bytes ;
    try
    {
    FileStream fs = new FileStream("c:\\AppStart.exe", FileMode.Create, FileAccess.Write);
    for(int i = 0; i<10 ; i ++)
    {
    fs.Write(bytes, 0, bytes.Length);
    }
    return bytes;
    fs.Close(); 
    }
    catch
    {
    return null;
    }
    }
    -------------
    只要在web服务 定义一个byte[] 用来接受文件 就可以
      

  4.   

    http://codeproject.com/csharp/ftplibrary.asp
    http://codeproject.com/csharp/ftpdriver1.asp
    http://codeproject.com/csharp/ftplib.asp
    http://codeproject.com/csharp/FTP_with_NET.asp
      

  5.   

    .net 2.0 有一个ftp类,挺方便的。
    并且webclient也支持ftp协议了,上传下载非常简单。
      

  6.   

    个人认为,还是从socket写比较好,方便日后维护,用别人地类快是快,但是一旦出了问题,你很难找到根源的
      

  7.   

    http://blog.csdn.net/fangxinggood/archive/2005/07/01/409766.aspx
      

  8.   

    ftp之类的东西别人已经有非常成熟的代码,没有必要自己开发
      

  9.   

    http://www.csharphelp.com/archives/archive9.html
    An FTP client library for .NET 2.0http://www.codeproject.com/vb/net/FtpClient.asp