上传任务流程.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #include "StdAfx.h"
  2. // 分店命名不能包含:type、@、$、-> 几类关键字;
  3. // 1.读取[version]表中的[uploadrule]字段信息;
  4. // 2.根据上传的相片类型来查找[uploadrule]字段中相应的上传规则;
  5. // 3.根据分店名查找出branchinfo.dat对应的ip地址;
  6. // 以下是 上传任务 *.dat的文件格式;
  7. // 4.填充CArray<CStringArray,CStringArray>对象;
  8. // 索引0:订单号 + ";" + 客人姓名;
  9. // 索引1:目标域名;
  10. // 索引2:源域名;
  11. // 索引3:压缩像素的值;
  12. // 索引4:相片所在的根目录;// 如果使用多级共享目录,索引4的值就无效!
  13. // 索引5:【相片类型】
  14. // 索引6:
  15. // 索引7:
  16. // 索引8:
  17. // 索引9:
  18. // 索引10:开始记录相片名称(不包含相片路径)
  19. // 索引11:空格,做为分隔符,分隔开下一张相片名;当上传完成该相片后,这里的被置为"OK",以表示相片已上传完成。
  20. // 索引12:第二张相片名;
  21. // 索引13:空格..
  22. // 索引n: 以此类推;
  23. // 索引n+1:以此类推;
  24. // 如果要使用多级共享目录,则需要在10以后的记录里,全部使用相片的完整路径,而不是使用相片名称;
  25. // 但是,若使用相片的完整路径,在共享目录更改后,会找不到相片所在路径 ,则会上传失败;
  26. // 如果使用相片名,可以在多个共享目录中查找,最后根据共享目录的相片路径 再上传;
  27. #include <afxtempl.h>
  28. void getuploadtaskfile()
  29. {
  30. CString str = "uploadtask.dat";
  31. CFile cf;
  32. CFileException e;
  33. if ( cf.Open(str, CFile::modeRead,&e) )
  34. {
  35. DWORD dwLenght = cf.GetLength();
  36. if (dwLenght <= sizeof(DWORD))
  37. {
  38. cf.Close();
  39. TRACE(_T("文件内容错误~"));
  40. return;
  41. }
  42. // 读取CArray大小;
  43. DWORD dwArySize = 0;
  44. cf.Read(&dwArySize,sizeof(DWORD));
  45. // 读取出CArray实际内容;
  46. BYTE *pBuffer = new BYTE[ dwLenght - sizeof(DWORD) ];
  47. cf.Read(pBuffer, dwLenght - sizeof(DWORD));
  48. // 使用内存文件转储出来;
  49. CMemFile cmf;
  50. cmf.Attach(pBuffer, dwLenght - sizeof(DWORD));
  51. // 再将内存文件序列化存储到CArchvie中;
  52. CArchive ar(&cmf, CArchive::load);
  53. // 从CArchive中序列化出来;
  54. CArray<CStringArray,CStringArray> tagAry;
  55. tagAry.SetSize(dwArySize, 1);
  56. for ( int i = 0; i < dwArySize; i++ )
  57. {
  58. tagAry.ElementAt(i).Serialize(ar);
  59. }
  60. // 释放所有资源;
  61. ar.Close();
  62. cmf.Detach();
  63. if ( pBuffer )
  64. delete []pBuffer;
  65. pBuffer = NULL;
  66. // 关闭文件;
  67. cf.Close();
  68. #if 1
  69. // 显示出所有内容;
  70. for ( int n = 0; n < dwArySize; n++ )
  71. {
  72. CStringArray &strAry = tagAry.ElementAt(n);
  73. for ( int k = 0; k < strAry.GetSize(); k++ )
  74. {
  75. CString str = strAry.ElementAt(k);
  76. //TRACE(str);
  77. TRACE(_T("%s\n"),str);
  78. }
  79. }
  80. /************************************************************************/
  81. /*
  82. 输出如下:
  83. //--------------------------------------------------------------
  84. 本店->机关店
  85. 20140220-043;客人:T3薛晓威,崔莯熹
  86. 原片
  87. 107/107
  88. 上传完毕
  89. 2015-09-22
  90. \\服务器\客户原片(管理软件)$\上传任务\2.dat
  91. 本店->机关店
  92. 20131224-002;客人:T2王爽,窦千壹
  93. 原片
  94. 91/91
  95. 上传完毕
  96. 2015-09-22
  97. \\服务器\客户原片(管理软件)$\上传任务\1.dat
  98. //--------------------------------------------------------------
  99. 元素固定大小 11 ;
  100. 索引0:[分店名]->[分店名]
  101. 索引1:订单号;客人:[姓名]
  102. 索引2:[相片类型]
  103. 索引3:[已上传数]/[总张数]
  104. 索引4:[上传状态] 状态有:等待中、上传完毕、连接服务器[ip]失败、上传文件失败[ip][文件名]、暂停、任务文件丢失、连接超时。
  105. 索引5:[上传完成日期]
  106. 索引6:[上传任务dat的路径]
  107. 索引7:未用
  108. 索引8:未用
  109. 索引9:未用
  110. 索引10:未用
  111. */
  112. /************************************************************************/
  113. #endif
  114. }
  115. }