- /// <summary>
- /// 上传文件
- /// </summary>
- /// <param name="fileinfo">需要上传的文件</param>
- /// <param name="targetDir">目标路径</param>
- /// <param name="hostname">ftp地址</param>
- /// <param name="username">ftp用户名</param>
- /// <param name="password">ftp密码</param>
- public void UploadFile(FileInfo fileinfo, string targetDir, string hostname, string username, string password,string Urlstr)
- {
- //1. check target
- //target = Guid.NewGuid().ToString(); //使用临时文件名
- string URI = Urlstr ;
- ///webClient webcl = new WebClient();
- System.Net.FtpWebRequest ftp = GetRequest(URI, username, password);
- //设置FTP命令 设置所要执行的FTP命令,
- //ftp.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;//假设此处为显示指定路径下的文件列表
- ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
- //指定文件传输的数据类型
- ftp.UseBinary = true;
- ftp.UsePassive = true;
- //告诉ftp文件大小
- ftp.ContentLength = fileinfo.Length;
- //缓冲大小设置为2KB
- const int BufferSize = 2048;
- byte[] content = new byte[BufferSize - 1 + 1];
- int dataRead;
- //打开一个文件流 (System.IO.FileStream) 去读上传的文件
- using (FileStream fs = fileinfo.OpenRead())
- {
- try
- {
- //把上传的文件写入流
- using (Stream rs = ftp.GetRequestStream())
- {
- do
- {
- //每次读文件流的2KB
- dataRead = fs.Read(content, 0, BufferSize);
- rs.Write(content, 0, dataRead);
- } while (!(dataRead < BufferSize));
- rs.Close();
- }
- }
- catch (Exception ex) { }
- finally
- {
- fs.Close();
- }
- SendOk = true;
- listBox1.Items.Add("同步完成!" + fileinfo.Name + "---" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- SendMessage(listBox1.Handle, WM_VSCROLL, SB_BOTTOM, 0);
- }
- ftp = null;
- }
- //该片段来自于http://www.codesnippet.cn/detail/060120131352.html
来源: http://www.codesnippet.cn/detail/060120131352.html