You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

743 lines
27 KiB

3 weeks ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace NFine.Code.FTP
  9. {
  10. public class FtpWeb
  11. {
  12. string ftpServerIP;
  13. string ftpRemotePath;
  14. string ftpUserID;
  15. string ftpPassword;
  16. string ftpURI;
  17. /// <summary>
  18. /// 连接FTP
  19. /// </summary>
  20. /// <param name="FtpServerIP">FTP连接地址</param>
  21. /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
  22. /// <param name="FtpUserID">用户名</param>
  23. /// <param name="FtpPassword">密码</param>
  24. public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
  25. {
  26. ftpServerIP = FtpServerIP;
  27. ftpRemotePath = FtpRemotePath;
  28. ftpUserID = FtpUserID;
  29. ftpPassword = FtpPassword;
  30. ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
  31. }
  32. /// <summary>
  33. /// 连接FTP
  34. /// </summary>
  35. /// <param name="FtpServerIP">FTP连接地址</param>
  36. /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
  37. /// <param name="FtpUserID">用户名</param>
  38. /// <param name="FtpPassword">密码</param>
  39. public FtpWeb(string FtpURI, string FtpUserID, string FtpPassword)
  40. {
  41. ftpServerIP = "";
  42. ftpRemotePath = "";
  43. ftpUserID = FtpUserID;
  44. ftpPassword = FtpPassword;
  45. ftpURI = FtpURI;
  46. }
  47. /// <summary>
  48. /// 上传
  49. /// </summary>
  50. /// <param name="filename"></param>
  51. public void Upload(string filename, long hid, string imgPath)
  52. {
  53. if (!File.Exists(filename))
  54. {
  55. return;
  56. }
  57. FileInfo fileInf = new FileInfo(filename);
  58. string uri = ftpURI + imgPath + fileInf.Name;
  59. FtpWebRequest reqFTP;
  60. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  61. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  62. reqFTP.KeepAlive = false;
  63. reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  64. reqFTP.UseBinary = true;
  65. reqFTP.ContentLength = fileInf.Length;
  66. int buffLength = 2048;
  67. byte[] buff = new byte[buffLength];
  68. int contentLen;
  69. FileStream fs = fileInf.OpenRead();
  70. try
  71. {
  72. Stream strm = reqFTP.GetRequestStream();
  73. contentLen = fs.Read(buff, 0, buffLength);
  74. while (contentLen != 0)
  75. {
  76. strm.Write(buff, 0, contentLen);
  77. contentLen = fs.Read(buff, 0, buffLength);
  78. }
  79. strm.Close();
  80. fs.Close();
  81. }
  82. catch (Exception ex)
  83. {
  84. Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);
  85. }
  86. }
  87. public void Upload(string filePath, string file, string filename)
  88. {
  89. bool b = FileExist(file);
  90. if (!b)
  91. {
  92. MakeDir(file);
  93. }
  94. string type = filePath.Substring(filePath.IndexOf("."));
  95. FileInfo fileInf = new FileInfo(filePath);
  96. string uri = ftpURI + file + "/" + filename + ".pdf";
  97. FtpWebRequest reqFTP;
  98. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  99. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  100. reqFTP.KeepAlive = false;
  101. reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  102. reqFTP.UseBinary = true;
  103. reqFTP.ContentLength = fileInf.Length;
  104. int buffLength = 2048;
  105. byte[] buff = new byte[buffLength];
  106. int contentLen;
  107. FileStream fs = fileInf.OpenRead();
  108. try
  109. {
  110. Stream strm = reqFTP.GetRequestStream();
  111. contentLen = fs.Read(buff, 0, buffLength);
  112. while (contentLen != 0)
  113. {
  114. strm.Write(buff, 0, contentLen);
  115. contentLen = fs.Read(buff, 0, buffLength);
  116. }
  117. strm.Close();
  118. fs.Close();
  119. }
  120. catch (Exception ex)
  121. {
  122. Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);
  123. }
  124. }
  125. /// <summary>
  126. /// 下载
  127. /// </summary>
  128. /// <param name="filePath"></param>
  129. /// <param name="fileName"></param>
  130. //public void Download(string filePath, string fileName)
  131. //{
  132. // FtpWebRequest reqFTP;
  133. // try
  134. // {
  135. // FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
  136. // reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
  137. // reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  138. // reqFTP.UseBinary = true;
  139. // reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  140. // FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  141. // Stream ftpStream = response.GetResponseStream();
  142. // long cl = response.ContentLength;
  143. // int bufferSize = 2048;
  144. // int readCount;
  145. // byte[] buffer = new byte[bufferSize];
  146. // readCount = ftpStream.Read(buffer, 0, bufferSize);
  147. // while (readCount > 0)
  148. // {
  149. // outputStream.Write(buffer, 0, readCount);
  150. // readCount = ftpStream.Read(buffer, 0, bufferSize);
  151. // }
  152. // ftpStream.Close();
  153. // outputStream.Close();
  154. // response.Close();
  155. // }
  156. // catch (Exception ex)
  157. // {
  158. // Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
  159. // }
  160. //}
  161. public void Download(string filePath, string fileName)
  162. {
  163. FtpWebRequest reqFTP;
  164. try
  165. {
  166. string localFilePath = Path.Combine(filePath, fileName);
  167. // 检查文件是否存在,如果存在则删除
  168. if (File.Exists(localFilePath))
  169. {
  170. File.Delete(localFilePath);
  171. }
  172. using (FileStream outputStream = new FileStream(localFilePath, FileMode.Create))
  173. {
  174. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
  175. reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  176. reqFTP.UseBinary = true;
  177. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  178. using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
  179. using (Stream ftpStream = response.GetResponseStream())
  180. {
  181. long cl = response.ContentLength;
  182. int bufferSize = 2048;
  183. int readCount;
  184. byte[] buffer = new byte[bufferSize];
  185. readCount = ftpStream.Read(buffer, 0, bufferSize);
  186. while (readCount > 0)
  187. {
  188. outputStream.Write(buffer, 0, readCount);
  189. readCount = ftpStream.Read(buffer, 0, bufferSize);
  190. }
  191. }
  192. }
  193. }
  194. catch (Exception ex)
  195. {
  196. Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
  197. }
  198. }
  199. public void Download(string filePath, string fileName, string file)
  200. {
  201. FtpWebRequest reqFTP;
  202. try
  203. {
  204. FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
  205. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + file + "/" + fileName));
  206. reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
  207. reqFTP.UseBinary = true;
  208. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  209. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  210. Stream ftpStream = response.GetResponseStream();
  211. long cl = response.ContentLength;
  212. int bufferSize = 2048;
  213. int readCount;
  214. byte[] buffer = new byte[bufferSize];
  215. readCount = ftpStream.Read(buffer, 0, bufferSize);
  216. while (readCount > 0)
  217. {
  218. outputStream.Write(buffer, 0, readCount);
  219. readCount = ftpStream.Read(buffer, 0, bufferSize);
  220. }
  221. ftpStream.Close();
  222. outputStream.Close();
  223. response.Close();
  224. }
  225. catch (Exception ex)
  226. {
  227. Insert_Standard_ErrorLog.Insert("FtpWeb", "Download Error --> " + ex.Message);
  228. }
  229. }
  230. public void Upload(string filename, long hid)
  231. {
  232. FileInfo fileInf = new FileInfo(filename);
  233. string uri = ftpURI + hid.ToString() + ".jpg";
  234. FtpWebRequest reqFTP;
  235. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  236. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  237. reqFTP.KeepAlive = false;
  238. reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
  239. reqFTP.UseBinary = true;
  240. reqFTP.ContentLength = fileInf.Length;
  241. int buffLength = 2048;
  242. byte[] buff = new byte[buffLength];
  243. int contentLen;
  244. FileStream fs = fileInf.OpenRead();
  245. try
  246. {
  247. Stream strm = reqFTP.GetRequestStream();
  248. contentLen = fs.Read(buff, 0, buffLength);
  249. while (contentLen != 0)
  250. {
  251. strm.Write(buff, 0, contentLen);
  252. contentLen = fs.Read(buff, 0, buffLength);
  253. }
  254. strm.Close();
  255. fs.Close();
  256. }
  257. catch (Exception ex)
  258. {
  259. Insert_Standard_ErrorLog.Insert("FtpWeb", "Upload Error --> " + ex.Message);
  260. }
  261. }
  262. /// <summary>
  263. /// 删除文件
  264. /// </summary>
  265. /// <param name="fileName"></param>
  266. public void Delete(string fileName)
  267. {
  268. try
  269. {
  270. string uri = ftpURI + fileName;
  271. FtpWebRequest reqFTP;
  272. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  273. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  274. reqFTP.KeepAlive = false;
  275. reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
  276. string result = String.Empty;
  277. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  278. long size = response.ContentLength;
  279. Stream datastream = response.GetResponseStream();
  280. StreamReader sr = new StreamReader(datastream);
  281. result = sr.ReadToEnd();
  282. sr.Close();
  283. datastream.Close();
  284. response.Close();
  285. }
  286. catch (Exception ex)
  287. {
  288. Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + fileName);
  289. }
  290. }
  291. public void Delete(string folderName, string fileName)
  292. {
  293. try
  294. {
  295. string uri = ftpURI + folderName + "/" + fileName;
  296. FtpWebRequest reqFTP;
  297. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  298. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  299. reqFTP.KeepAlive = false;
  300. reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;
  301. string result = String.Empty;
  302. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  303. long size = response.ContentLength;
  304. Stream datastream = response.GetResponseStream();
  305. StreamReader sr = new StreamReader(datastream);
  306. result = sr.ReadToEnd();
  307. sr.Close();
  308. datastream.Close();
  309. response.Close();
  310. }
  311. catch (Exception ex)
  312. {
  313. Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + fileName);
  314. }
  315. }
  316. /// <summary>
  317. /// 删除文件夹
  318. /// </summary>
  319. /// <param name="folderName"></param>
  320. public void RemoveDirectory(string folderName)
  321. {
  322. try
  323. {
  324. string uri = ftpURI + folderName;
  325. FtpWebRequest reqFTP;
  326. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
  327. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  328. reqFTP.KeepAlive = false;
  329. reqFTP.Method = WebRequestMethods.Ftp.RemoveDirectory;
  330. string result = String.Empty;
  331. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  332. long size = response.ContentLength;
  333. Stream datastream = response.GetResponseStream();
  334. StreamReader sr = new StreamReader(datastream);
  335. result = sr.ReadToEnd();
  336. sr.Close();
  337. datastream.Close();
  338. response.Close();
  339. }
  340. catch (Exception ex)
  341. {
  342. Insert_Standard_ErrorLog.Insert("FtpWeb", "Delete Error --> " + ex.Message + " 文件名:" + folderName);
  343. }
  344. }
  345. /// <summary>
  346. /// 获取当前目录下明细(包含文件和文件夹)
  347. /// </summary>
  348. /// <returns></returns>
  349. public string[] GetFilesDetailList()
  350. {
  351. string[] downloadFiles;
  352. try
  353. {
  354. StringBuilder result = new StringBuilder();
  355. FtpWebRequest ftp;
  356. ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
  357. ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  358. ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
  359. WebResponse response = ftp.GetResponse();
  360. Encoding encode = Encoding.GetEncoding("GB2312");//转换中文
  361. //StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
  362. StreamReader reader = new StreamReader(response.GetResponseStream(), encode);
  363. //while (reader.Read() > 0)
  364. //{
  365. //}
  366. string line = reader.ReadLine();
  367. while (line != null)
  368. {
  369. result.Append(line);
  370. result.Append("\n");
  371. line = reader.ReadLine();
  372. }
  373. result.Remove(result.ToString().LastIndexOf("\n"), 1);
  374. reader.Close();
  375. response.Close();
  376. return result.ToString().Split('\n');
  377. }
  378. catch (Exception ex)
  379. {
  380. downloadFiles = null;
  381. Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFilesDetailList Error --> " + ex.Message);
  382. return downloadFiles;
  383. }
  384. }
  385. // <summary>
  386. // 获取当前目录下文件列表(仅文件)
  387. // </summary>
  388. // <returns></returns>
  389. public string[] GetFileList(string mask)
  390. {
  391. string[] downloadFiles;
  392. StringBuilder result = new StringBuilder();
  393. FtpWebRequest reqFTP;
  394. try
  395. {
  396. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + mask));
  397. mask = "*.*";
  398. reqFTP.UseBinary = true;
  399. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  400. reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
  401. WebResponse response = reqFTP.GetResponse();
  402. Encoding encode = Encoding.GetEncoding("UTF-8");//转换中文
  403. StreamReader reader = new StreamReader(response.GetResponseStream(), encode);
  404. ///StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
  405. string line = reader.ReadLine();
  406. while (line != null)
  407. {
  408. if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
  409. {
  410. //string mask_ = mask.Substring(0, mask.IndexOf("*"));
  411. //if (line.Substring(0, mask_.Length) == mask_)
  412. //{
  413. // result.Append(line);
  414. // result.Append("\n");
  415. //}
  416. if (line.Contains(mask))
  417. {
  418. result.Append(line);
  419. result.Append("\n");
  420. }
  421. }
  422. else
  423. {
  424. result.Append(line);
  425. result.Append("\n");
  426. }
  427. line = reader.ReadLine();
  428. }
  429. if (result.Length > 0) result.Remove(result.ToString().LastIndexOf('\n'), 1);
  430. reader.Close();
  431. response.Close();
  432. return result.ToString().Split('\n');
  433. }
  434. catch (Exception ex)
  435. {
  436. downloadFiles = null;
  437. if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
  438. {
  439. Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileList Error --> " + ex.Message.ToString());
  440. }
  441. return downloadFiles;
  442. }
  443. }
  444. /// <summary>
  445. /// 获取当前目录下所有的文件夹列表(仅文件夹)
  446. /// </summary>
  447. /// <returns></returns>
  448. public string[] GetDirectoryList()
  449. {
  450. string[] drectory = GetFilesDetailList();
  451. string m = string.Empty;
  452. foreach (string str in drectory)
  453. {
  454. int dirPos = str.IndexOf("<DIR>");
  455. if (dirPos > 0)
  456. {
  457. /*判断 Windows 风格*/
  458. m += str.Substring(dirPos + 5).Trim() + "\n";
  459. }
  460. else if (str.Trim().Substring(0, 1).ToUpper() == "D")
  461. {
  462. /*判断 Unix 风格*/
  463. string dir = str.Substring(54).Trim();
  464. if (dir != "." && dir != "..")
  465. {
  466. m += dir + "\n";
  467. }
  468. }
  469. }
  470. char[] n = new char[] { '\n' };
  471. return m.Split(n);
  472. }
  473. /// <summary>
  474. /// 判断当前目录下指定的子目录是否存在
  475. /// </summary>
  476. /// <param name="RemoteDirectoryName">指定的目录名</param>
  477. public bool DirectoryExist(string RemoteDirectoryName)
  478. {
  479. string[] dirList = GetDirectoryList();
  480. foreach (string str in dirList)
  481. {
  482. if (str.Trim() == RemoteDirectoryName.Trim())
  483. {
  484. return true;
  485. }
  486. }
  487. return false;
  488. }
  489. /// <summary>
  490. /// 判断当前目录下指定的文件是否存在
  491. /// </summary>
  492. /// <param name="RemoteFileName">远程文件名</param>
  493. public bool FileExist(string RemoteFileName)
  494. {
  495. string[] fileList = GetFileList("*.*");
  496. //if (fileList == null)
  497. // return false;
  498. foreach (string str in fileList)
  499. {
  500. if (str.Trim() == RemoteFileName.Trim())
  501. {
  502. return true;
  503. }
  504. }
  505. return false;
  506. }
  507. /// <summary>
  508. /// 创建文件夹
  509. /// </summary>
  510. /// <param name="dirName"></param>
  511. public void MakeDir(string dirName)
  512. {
  513. FtpWebRequest reqFTP;
  514. try
  515. {
  516. // dirName = name of the directory to create.
  517. if (Directory.Exists(ftpURI + dirName))
  518. {
  519. return;
  520. }
  521. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));
  522. reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;
  523. reqFTP.KeepAlive = false;
  524. reqFTP.UsePassive = true;
  525. reqFTP.UseBinary = true;
  526. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  527. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  528. Stream ftpStream = response.GetResponseStream();
  529. ftpStream.Close();
  530. response.Close();
  531. }
  532. catch (Exception ex)
  533. {
  534. Insert_Standard_ErrorLog.Insert("FtpWeb", "MakeDir Error --> " + ex.Message);
  535. }
  536. }
  537. /// <summary>
  538. /// 获取指定文件大小
  539. /// </summary>
  540. /// <param name="filename"></param>
  541. /// <returns></returns>
  542. public long GetFileSize(string filename)
  543. {
  544. FtpWebRequest reqFTP;
  545. long fileSize = 0;
  546. try
  547. {
  548. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));
  549. reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;
  550. reqFTP.UseBinary = true;
  551. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  552. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  553. Stream ftpStream = response.GetResponseStream();
  554. fileSize = response.ContentLength;
  555. ftpStream.Close();
  556. response.Close();
  557. }
  558. catch (Exception ex)
  559. {
  560. Insert_Standard_ErrorLog.Insert("FtpWeb", "GetFileSize Error --> " + ex.Message);
  561. }
  562. return fileSize;
  563. }
  564. /// <summary>
  565. /// 改名
  566. /// </summary>
  567. /// <param name="currentFilename"></param>
  568. /// <param name="newFilename"></param>
  569. public void ReName(string currentFilename, string newFilename)
  570. {
  571. FtpWebRequest reqFTP;
  572. try
  573. {
  574. reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
  575. reqFTP.Method = WebRequestMethods.Ftp.Rename;
  576. reqFTP.RenameTo = newFilename;
  577. reqFTP.UseBinary = true;
  578. reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
  579. FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
  580. Stream ftpStream = response.GetResponseStream();
  581. ftpStream.Close();
  582. response.Close();
  583. }
  584. catch (Exception ex)
  585. {
  586. Insert_Standard_ErrorLog.Insert("FtpWeb", "ReName Error --> " + ex.Message);
  587. }
  588. }
  589. /// <summary>
  590. /// 移动文件
  591. /// </summary>
  592. /// <param name="currentFilename"></param>
  593. /// <param name="newFilename"></param>
  594. public void MovieFile(string currentFilename, string newDirectory)
  595. {
  596. ReName(currentFilename, newDirectory);
  597. }
  598. /// <summary>
  599. /// 切换当前目录
  600. /// </summary>
  601. /// <param name="DirectoryName"></param>
  602. /// <param name="IsRoot">true 绝对路径 false 相对路径</param>
  603. public void GotoDirectory(string DirectoryName, bool IsRoot)
  604. {
  605. if (IsRoot)
  606. {
  607. ftpRemotePath = DirectoryName;
  608. }
  609. else
  610. {
  611. ftpRemotePath += DirectoryName + "/";
  612. }
  613. ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
  614. }
  615. /// <summary>
  616. /// 删除订单目录
  617. /// </summary>
  618. /// <param name="ftpServerIP">FTP 主机地址</param>
  619. /// <param name="folderToDelete">FTP 用户名</param>
  620. /// <param name="ftpUserID">FTP 用户名</param>
  621. /// <param name="ftpPassword">FTP 密码</param>
  622. public static void DeleteOrderDirectory(string ftpServerIP, string folderToDelete, string ftpUserID, string ftpPassword)
  623. {
  624. try
  625. {
  626. if (!string.IsNullOrEmpty(ftpServerIP) && !string.IsNullOrEmpty(folderToDelete) && !string.IsNullOrEmpty(ftpUserID) && !string.IsNullOrEmpty(ftpPassword))
  627. {
  628. FtpWeb fw = new FtpWeb(ftpServerIP, folderToDelete, ftpUserID, ftpPassword);
  629. //进入订单目录
  630. fw.GotoDirectory(folderToDelete, true);
  631. //获取规格目录
  632. string[] folders = fw.GetDirectoryList();
  633. foreach (string folder in folders)
  634. {
  635. if (!string.IsNullOrEmpty(folder) || folder != "")
  636. {
  637. //进入订单目录
  638. string subFolder = folderToDelete + "/" + folder;
  639. fw.GotoDirectory(subFolder, true);
  640. //获取文件列表
  641. string[] files = fw.GetFileList("*.*");
  642. if (files != null)
  643. {
  644. //删除文件
  645. foreach (string file in files)
  646. {
  647. fw.Delete(file);
  648. }
  649. }
  650. //删除冲印规格文件夹
  651. fw.GotoDirectory(folderToDelete, true);
  652. fw.RemoveDirectory(folder);
  653. }
  654. }
  655. //删除订单文件夹
  656. string parentFolder = folderToDelete.Remove(folderToDelete.LastIndexOf('/'));
  657. string orderFolder = folderToDelete.Substring(folderToDelete.LastIndexOf('/') + 1);
  658. fw.GotoDirectory(parentFolder, true);
  659. fw.RemoveDirectory(orderFolder);
  660. }
  661. else
  662. {
  663. throw new Exception("FTP 及路径不能为空!");
  664. }
  665. }
  666. catch (Exception ex)
  667. {
  668. throw new Exception("删除订单时发生错误,错误信息为:" + ex.Message);
  669. }
  670. }
  671. }
  672. public class Insert_Standard_ErrorLog
  673. {
  674. public static void Insert(string x, string y)
  675. {
  676. }
  677. }
  678. }