/// <summary> /// 格式化时间 /// </summary> public static string GetTime(this HtmlHelper helper, DateTime dt) { if (res.Lang == "zh-cn" || res.Lang == "zh-tw") { return dt.ToString("yyyy-MM-dd HH:mm"); } else { DateTimeFormatInfo myDTFI = new CultureInfo(res.Lang, false).DateTimeFormat; string strmon = myDTFI.GetAbbreviatedMonthName(dt.Month); return strmon + ". " + dt.Day + ", " + dt.Year + " " + dt.ToString("HH:mm"); } }
// 处理LIST/NLIST命令,想客户端发送当前或指定目录下的所有文件名和子目录名 private void CommandLIST(User user, string parameter) { string sendString = string.Empty; DateTimeFormatInfo dateTimeFormat = new CultureInfo("en-US", true).DateTimeFormat; // 得到目录列表 string[] dir = Directory.GetDirectories(user.currentDir); if (string.IsNullOrEmpty(parameter) == false) { if (Directory.Exists(user.currentDir + parameter)) { dir = Directory.GetDirectories(user.currentDir + parameter); } else { string s = user.currentDir.TrimEnd('/'); user.currentDir = s.Substring(0, s.LastIndexOf("/") + 1); } } for (int i = 0; i < dir.Length; i++) { string folderName = Path.GetFileName(dir[i]); DirectoryInfo d = new DirectoryInfo(dir[i]); // 按下面的格式输出目录列表 sendString += @"dwr-\t" + Dns.GetHostName() + "\t" + dateTimeFormat.GetAbbreviatedMonthName(d.CreationTime.Month) + d.CreationTime.ToString(" dd yyyy") + "\t" + folderName + Environment.NewLine; } // 得到文件列表 string[] files = Directory.GetFiles(user.currentDir); if (string.IsNullOrEmpty(parameter) == false) { if (Directory.Exists(user.currentDir + parameter + "/")) { files = Directory.GetFiles(user.currentDir + parameter + "/"); } } for (int i = 0; i < files.Length; i++) { FileInfo f = new FileInfo(files[i]); string fileName = Path.GetFileName(files[i]); // 按下面的格式输出文件列表 sendString += "-wr-\t" + Dns.GetHostName() + "\t" + f.Length + " " + dateTimeFormat.GetAbbreviatedMonthName(f.CreationTime.Month) + f.CreationTime.ToString(" dd yyyy") + "\t" + fileName + Environment.NewLine; } // List命令指示获得FTP服务器上的文件列表字符串信息 // 所以调用List命令过程,客户端接受的指示一些字符串 // 所以isBinary是false,代表传输的是ASCII数据 // 但是为了防止isBinary因为 设置user.isBinary = false而改变 // 所以事先保存user.IsBinary的引用(此时为true),方便后面下载文件 bool isBinary = user.isBinary; user.isBinary = false; RepleyCommandToUser(user, "150 Opening ASCII data connection"); InitDataSession(user); SendByUserSession(user, sendString); RepleyCommandToUser(user, "226 Transfer complete"); user.isBinary = isBinary; }