datacenter.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. package com.cnd3b.restcontroller.enterprise.datacenter;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.aliyun.oss.model.*;
  5. import com.cnd3b.common.Controller;
  6. import com.cnd3b.common.data.Rows;
  7. import com.cnd3b.common.data.SQLFactory;
  8. import com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant;
  9. import java.io.ByteArrayInputStream;
  10. import java.io.File;
  11. import java.io.UnsupportedEncodingException;
  12. import java.net.URLDecoder;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import static com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant.BUCKE_NAME_1;
  16. import static com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant.file_url;
  17. public class datacenter extends Controller {
  18. // String url = BUCKE_NAME_1 + "." + AliyunOSSConfigConstant.END_POINT;
  19. //根目录
  20. String rootpath = "资料中心/";
  21. /**
  22. * 构造函数
  23. *
  24. * @param content
  25. */
  26. public datacenter(JSONObject content) {
  27. super(content);
  28. }
  29. /**
  30. * 创建文件夹(OSS)
  31. *
  32. * @return
  33. */
  34. public String createFolder() {
  35. String folderName = content.getString("folderName");
  36. if (folderName.equals("") || folderName == null) {
  37. return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString();
  38. }
  39. ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, rootpath + folderName, new ByteArrayInputStream("".getBytes())));
  40. ossClient.shutdown();
  41. return getSucReturnObject().toString();
  42. }
  43. /**
  44. * 删除文件夹(OSS)
  45. *
  46. * @return
  47. */
  48. public String deleteFolder() {
  49. JSONArray jsonArray = content.getJSONArray("folderName");
  50. if (jsonArray == null || jsonArray.size() == 0) {
  51. return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString();
  52. }
  53. ArrayList<String> keysList = new ArrayList<>();
  54. for (Object obj : jsonArray) {
  55. keysList.add(obj.toString());
  56. }
  57. DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
  58. request.setKeys(keysList);
  59. // 发起deleteObjects请求。
  60. ossClient.deleteObjects(request);
  61. // // 查看删除结果。
  62. // for (String o : delObjResult.getDeletedObjects()) {
  63. // String keyName = null;
  64. // try {
  65. // keyName = URLDecoder.decode(o, "UTF-8");
  66. // } catch (UnsupportedEncodingException e) {
  67. // e.printStackTrace();
  68. // }
  69. // System.out.println("delete key name: " + keyName);
  70. // }
  71. ossClient.shutdown();
  72. SQLFactory sqlFactory = new SQLFactory(this, "删除文件夹");
  73. sqlFactory.addParameter_in("fpath", keysList);
  74. String sql = sqlFactory.getSQL();
  75. dbConnect.runSqlUpdate(sql);
  76. return getSucReturnObject().toString();
  77. }
  78. /**
  79. * 上传文件(OSS)
  80. *
  81. * @return
  82. */
  83. public String uploadFile() {
  84. String filePath = content.getString("filePath");
  85. String folderPath = content.getString("folderPath");
  86. if (filePath.equals("") || filePath == null) {
  87. return getErrReturnObject().setErrMsg("文件路径不能为空").toString();
  88. }
  89. if (folderPath.equals("") || folderPath == null) {
  90. folderPath = "";
  91. }
  92. File file = new File(filePath);
  93. if (!file.exists()) {
  94. return getErrReturnObject().setErrMsg("文件不存在").toString();
  95. }
  96. String key = folderPath + file.getName();
  97. System.err.println(key);
  98. ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, rootpath + key, file));
  99. ossClient.shutdown();
  100. return getSucReturnObject().toString();
  101. }
  102. /**
  103. * 删除文件(OSS)
  104. *
  105. * @return
  106. */
  107. public String deleteFile() {
  108. JSONArray jsonArray = content.getJSONArray("folderName");
  109. if (jsonArray == null || jsonArray.size() == 0) {
  110. return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString();
  111. }
  112. List<String> keysList = new ArrayList<>();
  113. for (Object obj : jsonArray) {
  114. keysList.add(obj.toString());
  115. }
  116. DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1);
  117. request.setKeys(keysList);
  118. // 发起deleteObjects请求。
  119. DeleteObjectsResult delObjResult = ossClient.deleteObjects(request);
  120. // 查看删除结果。
  121. for (String o : delObjResult.getDeletedObjects()) {
  122. String keyName = null;
  123. try {
  124. keyName = URLDecoder.decode(o, "UTF-8");
  125. } catch (UnsupportedEncodingException e) {
  126. e.printStackTrace();
  127. }
  128. System.out.println("delete key name: " + keyName);
  129. }
  130. ossClient.shutdown();
  131. return getSucReturnObject().toString();
  132. }
  133. /**
  134. * 获取根目录
  135. *
  136. * @return
  137. */
  138. public String getFolders() {
  139. // 构造ListObjectsRequest请求。
  140. ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
  141. // 设置正斜线(/)为文件夹的分隔符。
  142. listObjectsRequest.setDelimiter("/");
  143. // 列出fun目录下的所有文件和文件夹。
  144. listObjectsRequest.setPrefix("资料中心/");
  145. ObjectListing listing = ossClient.listObjects(listObjectsRequest);
  146. // 遍历所有commonPrefix。
  147. ArrayList<String> commonPrefixList = new ArrayList<>();
  148. for (String commonPrefix : listing.getCommonPrefixes()) {
  149. String selectSql = "SELECT*FROM tfolder WHERE fpath='" + commonPrefix + "'";
  150. Rows rows = dbConnect.runSqlQuery(selectSql);
  151. if (rows.isEmpty()) {
  152. Long id = createTableID("tfolder", "tfolderid");
  153. String sql = "INSERT INTO tfolder(tfolderid,rmkenable,fpath,createdate) VALUES(" + id + ", 0,'" + commonPrefix + "','" + getDateTime_Str() + "')";
  154. dbConnect.runSqlUpdate(sql);
  155. }
  156. commonPrefixList.add(commonPrefix);
  157. }
  158. // 关闭OSSClient。
  159. ossClient.shutdown();
  160. JSONObject object = new JSONObject();
  161. object.put("folder", commonPrefixList);
  162. SQLFactory sqlFactory = new SQLFactory(this, "查询根目录");
  163. sqlFactory.addParameter_in("fpath", commonPrefixList);
  164. String sql = sqlFactory.getSQL();
  165. Rows rows = dbConnect.runSqlQuery(sql);
  166. return getSucReturnObject().setData(rows).toString();
  167. }
  168. /**
  169. * 获取文件夹
  170. *
  171. * @return
  172. */
  173. public String getAllFolders() {
  174. // 构造ListObjectsRequest请求。
  175. ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
  176. // 列举文件。
  177. ObjectListing listing = ossClient.listObjects(listObjectsRequest);
  178. //遍历所有文件。
  179. //System.out.println("Objects:");
  180. //List<String> stringList = new ArrayList<>();
  181. for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
  182. System.out.println(objectSummary.getKey());
  183. if (objectSummary.getKey().endsWith("/")) {
  184. String key = objectSummary.getKey();
  185. //stringList.add(key);
  186. String selectSql = "SELECT*FROM tfolder WHERE fpath='" + key + "'";
  187. Rows rows = dbConnect.runSqlQuery(selectSql);
  188. if (rows.isEmpty()) {
  189. Long id = createTableID("tfolder", "tfolderid");
  190. String sql = "INSERT INTO tfolder(tfolderid,rmkenable,fpath,createdate) VALUES(" + id + ", 0,'" + objectSummary.getKey() + "','" + getDateTime_Str() + "')";
  191. dbConnect.runSqlUpdate(sql);
  192. }
  193. }
  194. }
  195. // 关闭OSSClient。
  196. ossClient.shutdown();
  197. String sql = "SELECT tfolderid,fpath FROM tfolder ORDER BY tfolderid ";
  198. Rows rows = dbConnect.runSqlQuery(sql);
  199. return getSucReturnObject().setData(rows).toString();
  200. }
  201. /**
  202. * 获取指定目录下的文件和文件夹
  203. *
  204. * @return
  205. */
  206. public String getFilesOfPath() {
  207. String folderPath = content.getString("folderPath");
  208. // 构造ListObjectsRequest请求。
  209. ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1);
  210. // 设置正斜线(/)为文件夹的分隔符。
  211. listObjectsRequest.setDelimiter("/");
  212. // 列出fun目录下的所有文件和文件夹。
  213. listObjectsRequest.setPrefix(folderPath);
  214. ObjectListing listing = ossClient.listObjects(listObjectsRequest);
  215. // 遍历所有文件。
  216. System.out.println("Objects:");
  217. List<JSONObject> objectSummaryList = new ArrayList<>();
  218. for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) {
  219. if (!objectSummary.getKey().equals(folderPath)) {
  220. JSONObject object = new JSONObject();
  221. object.put("key", objectSummary.getKey());
  222. object.put("name", objectSummary.getKey().replace(folderPath, ""));
  223. object.put("size", objectSummary.getSize() / 1024);
  224. object.put("time", getDateTime_Str(objectSummary.getLastModified()));
  225. object.put("url", file_url + "/" + objectSummary.getKey());
  226. objectSummaryList.add(object);
  227. }
  228. }
  229. // 遍历所有commonPrefix。
  230. System.out.println("CommonPrefixes:");
  231. List<JSONObject> commonPrefixList = new ArrayList<>();
  232. for (String commonPrefix : listing.getCommonPrefixes()) {
  233. JSONObject object = new JSONObject();
  234. object.put("folderpath", commonPrefix);
  235. commonPrefixList.add(object);
  236. }
  237. // 关闭OSSClient。
  238. ossClient.shutdown();
  239. JSONObject object = new JSONObject();
  240. object.put("files", objectSummaryList);
  241. object.put("folder", commonPrefixList);
  242. return getSucReturnObject().setData(object).toString();
  243. }
  244. }