我现在想做一个winfrom ,想利用ftp技术进行多线程的上传图片,而且还有进度条显示!请哪个大侠能指点一下,给个例子,谢谢!

解决方案 »

  1.   

    只要开一个上传的线程就行了,只要不卡住UI就可以了类似这样的代码
    Thread t = new Thread(workThreadFunc);
    t.Start();
      

  2.   

    http://blog.csdn.net/hank212/article/details/6562918
      

  3.   


    bw = new BackgroundWorker();
                                                bw.WorkerReportsProgress = true;
                                                bw.DoWork += new DoWorkEventHandler(bw_DoWork);
                                                bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
                                                bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
                                                bw.RunWorkerAsync(temp);
    private void bw_DoWork(object sender, DoWorkEventArgs e)
            {
                ftp 下载
            }
      

  4.   

    ftp上传图片,你做完了吗?
    做完了,放在一个线程里运行,就好了。
      

  5.   

    比如用webclient
            WebClient wc = new WebClient();
            byte[] data = new byte[10];
            wc.UploadDataCompleted += new UploadDataCompletedEventHandler(wc_UploadDataCompleted);
            wc.UploadDataAsync(new Uri("http://www.sina.com.cn"), data);
      

  6.   

    这是我上传图片的方法,大家看看怎么弄可以??
    /// <summary>
            /// 上传文件到FTP服务器上【注意:当文件存在时,覆盖原来的文件】
            /// </summary>
            /// <param name="fileName">本地文件路径(例如:d:\ftp_upload1.txt)</param>
            /// <param name="uploadUrl">FTP服务器路径(例如:ftp://192.168.10.176/ftp_upload.txt )</param>
            /// <param name="userName">用户名</param>
            /// <param name="password">密码</param>
            /// <param name="strResult">执行结果</param>
            /// <returns>0:成功; 1:失败</returns>
            public int UploadFun(string fileName, string uploadUrl, string userName, string password, ref string strResult)
            {
                Stream requestStream = null;
                FileStream fileStream = null;
                FtpWebResponse uploadResponse = null;
                try
                {
                    FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);
                    uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;                uploadRequest.Proxy = null;
                    uploadRequest.KeepAlive = true;
                    uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
                    uploadRequest.UsePassive = true;
                    NetworkCredential nc = new NetworkCredential();
                    nc.UserName = userName;
                    nc.Password = password;                uploadRequest.Credentials = nc; //修改getCredential();错误2
                    requestStream = uploadRequest.GetRequestStream();
                    fileStream = File.Open(fileName, FileMode.Open);                byte[] buffer = new byte[1024];
                    int bytesRead;
                    while (true)
                    {
                        bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                        if (bytesRead == 0)
                            break;
                        requestStream.Write(buffer, 0, bytesRead);
                    }
                    requestStream.Close();                uploadResponse = (FtpWebResponse)uploadRequest.GetResponse();
                    if (uploadResponse.StatusCode == FtpStatusCode.ClosingData)
                    {
                        strResult = "上传成功,文件:" + fileName;
                        return 0;
                    }
                    else
                    {
                        strResult = "上传文件失败,code=" + uploadResponse.StatusCode.ToString();
                    }            }
                catch (UriFormatException ex)
                {
                    strResult = ex.Message;
                }
                catch (IOException ex)
                {
                    strResult = ex.Message;
                }
                catch (WebException ex)
                {
                    strResult = ex.Message;
                }
                finally
                {
                    if (uploadResponse != null)
                        uploadResponse.Close();
                    if (fileStream != null)
                        fileStream.Close();
                    if (requestStream != null)
                        requestStream.Close();
                }            return 1;
            }