上传的核心方法:直接调用就可以了
// filename上传文件路径
//ftpServerIP 服务器Ip,默认端口是21
//ftpUserID,服务器用户名。
//ftpPassword,服务器密码
public int Upload(string filename, string ftpServerIP, string ftpUserID, string ftpPassword)
{ //读取要上传服务器的Ip FileInfo fileInf = new FileInfo(filename); string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name; FtpWebRequest reqFTP; //Response.Write("<script>alert('" + uri + "')</script>"); // 根据uri创建FtpWebRequest对象 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);// 默认为true,连接不会被关闭
// 在一个命令之后被执行 reqFTP.KeepAlive = false;// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;// 指定数据传输类型
reqFTP.UseBinary = true;// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length;// 缓冲大小设置为2kb
int buffLength = 2048;byte[] buff = new byte[buffLength];
int contentLen;// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead(); try { // 把上传的文件写入流 Stream strm = reqFTP.GetRequestStream();// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength);// 流内容没有结束
while (contentLen != 0) { // 把内容从file stream 写入 upload stream strm.Write(buff, 0, contentLen);contentLen = fs.Read(buff, 0, buffLength);
}// 关闭两个流
strm.Close(); fs.Close(); //this.Page.RegisterStartupScript("", "<script>alert('成功')</script>"); return 1; } catch (Exception ex) { // MessageBox.Show(ex.Message, "Upload Error"); throw ex; } }