package com.cnd3b.restcontroller.enterprise.datacenter; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aliyun.oss.model.*; import com.cnd3b.common.Controller; import com.cnd3b.common.data.Rows; import com.cnd3b.common.data.SQLFactory; import com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant; import java.io.ByteArrayInputStream; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.ArrayList; import java.util.List; import static com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant.BUCKE_NAME_1; import static com.cnd3b.utility.aliyun.oss.AliyunOSSConfigConstant.file_url; public class datacenter extends Controller { // String url = BUCKE_NAME_1 + "." + AliyunOSSConfigConstant.END_POINT; //根目录 String rootpath = "资料中心/"; /** * 构造函数 * * @param content */ public datacenter(JSONObject content) { super(content); } /** * 创建文件夹(OSS) * * @return */ public String createFolder() { String folderName = content.getString("folderName"); if (folderName.equals("") || folderName == null) { return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString(); } ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, rootpath + folderName, new ByteArrayInputStream("".getBytes()))); ossClient.shutdown(); return getSucReturnObject().toString(); } /** * 删除文件夹(OSS) * * @return */ public String deleteFolder() { JSONArray jsonArray = content.getJSONArray("folderName"); if (jsonArray == null || jsonArray.size() == 0) { return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString(); } ArrayList keysList = new ArrayList<>(); for (Object obj : jsonArray) { keysList.add(obj.toString()); } DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1); request.setKeys(keysList); // 发起deleteObjects请求。 ossClient.deleteObjects(request); // // 查看删除结果。 // for (String o : delObjResult.getDeletedObjects()) { // String keyName = null; // try { // keyName = URLDecoder.decode(o, "UTF-8"); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // System.out.println("delete key name: " + keyName); // } ossClient.shutdown(); SQLFactory sqlFactory = new SQLFactory(this, "删除文件夹"); sqlFactory.addParameter_in("fpath", keysList); String sql = sqlFactory.getSQL(); dbConnect.runSqlUpdate(sql); return getSucReturnObject().toString(); } /** * 上传文件(OSS) * * @return */ public String uploadFile() { String filePath = content.getString("filePath"); String folderPath = content.getString("folderPath"); if (filePath.equals("") || filePath == null) { return getErrReturnObject().setErrMsg("文件路径不能为空").toString(); } if (folderPath.equals("") || folderPath == null) { folderPath = ""; } File file = new File(filePath); if (!file.exists()) { return getErrReturnObject().setErrMsg("文件不存在").toString(); } String key = folderPath + file.getName(); System.err.println(key); ossClient.putObject(new PutObjectRequest(BUCKE_NAME_1, rootpath + key, file)); ossClient.shutdown(); return getSucReturnObject().toString(); } /** * 删除文件(OSS) * * @return */ public String deleteFile() { JSONArray jsonArray = content.getJSONArray("folderName"); if (jsonArray == null || jsonArray.size() == 0) { return getErrReturnObject().setErrMsg("文件夹名称不能为空").toString(); } List keysList = new ArrayList<>(); for (Object obj : jsonArray) { keysList.add(obj.toString()); } DeleteObjectsRequest request = new DeleteObjectsRequest(BUCKE_NAME_1); request.setKeys(keysList); // 发起deleteObjects请求。 DeleteObjectsResult delObjResult = ossClient.deleteObjects(request); // 查看删除结果。 for (String o : delObjResult.getDeletedObjects()) { String keyName = null; try { keyName = URLDecoder.decode(o, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println("delete key name: " + keyName); } ossClient.shutdown(); return getSucReturnObject().toString(); } /** * 获取根目录 * * @return */ public String getFolders() { // 构造ListObjectsRequest请求。 ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1); // 设置正斜线(/)为文件夹的分隔符。 listObjectsRequest.setDelimiter("/"); // 列出fun目录下的所有文件和文件夹。 listObjectsRequest.setPrefix("资料中心/"); ObjectListing listing = ossClient.listObjects(listObjectsRequest); // 遍历所有commonPrefix。 ArrayList commonPrefixList = new ArrayList<>(); for (String commonPrefix : listing.getCommonPrefixes()) { String selectSql = "SELECT*FROM tfolder WHERE fpath='" + commonPrefix + "'"; Rows rows = dbConnect.runSqlQuery(selectSql); if (rows.isEmpty()) { Long id = createTableID("tfolder", "tfolderid"); String sql = "INSERT INTO tfolder(tfolderid,rmkenable,fpath,createdate) VALUES(" + id + ", 0,'" + commonPrefix + "','" + getDateTime_Str() + "')"; dbConnect.runSqlUpdate(sql); } commonPrefixList.add(commonPrefix); } // 关闭OSSClient。 ossClient.shutdown(); JSONObject object = new JSONObject(); object.put("folder", commonPrefixList); SQLFactory sqlFactory = new SQLFactory(this, "查询根目录"); sqlFactory.addParameter_in("fpath", commonPrefixList); String sql = sqlFactory.getSQL(); Rows rows = dbConnect.runSqlQuery(sql); return getSucReturnObject().setData(rows).toString(); } /** * 获取文件夹 * * @return */ public String getAllFolders() { // 构造ListObjectsRequest请求。 ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1); // 列举文件。 ObjectListing listing = ossClient.listObjects(listObjectsRequest); //遍历所有文件。 //System.out.println("Objects:"); //List stringList = new ArrayList<>(); for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) { System.out.println(objectSummary.getKey()); if (objectSummary.getKey().endsWith("/")) { String key = objectSummary.getKey(); //stringList.add(key); String selectSql = "SELECT*FROM tfolder WHERE fpath='" + key + "'"; Rows rows = dbConnect.runSqlQuery(selectSql); if (rows.isEmpty()) { Long id = createTableID("tfolder", "tfolderid"); String sql = "INSERT INTO tfolder(tfolderid,rmkenable,fpath,createdate) VALUES(" + id + ", 0,'" + objectSummary.getKey() + "','" + getDateTime_Str() + "')"; dbConnect.runSqlUpdate(sql); } } } // 关闭OSSClient。 ossClient.shutdown(); String sql = "SELECT tfolderid,fpath FROM tfolder ORDER BY tfolderid "; Rows rows = dbConnect.runSqlQuery(sql); return getSucReturnObject().setData(rows).toString(); } /** * 获取指定目录下的文件和文件夹 * * @return */ public String getFilesOfPath() { String folderPath = content.getString("folderPath"); // 构造ListObjectsRequest请求。 ListObjectsRequest listObjectsRequest = new ListObjectsRequest(BUCKE_NAME_1); // 设置正斜线(/)为文件夹的分隔符。 listObjectsRequest.setDelimiter("/"); // 列出fun目录下的所有文件和文件夹。 listObjectsRequest.setPrefix(folderPath); ObjectListing listing = ossClient.listObjects(listObjectsRequest); // 遍历所有文件。 System.out.println("Objects:"); List objectSummaryList = new ArrayList<>(); for (OSSObjectSummary objectSummary : listing.getObjectSummaries()) { if (!objectSummary.getKey().equals(folderPath)) { JSONObject object = new JSONObject(); object.put("key", objectSummary.getKey()); object.put("name", objectSummary.getKey().replace(folderPath, "")); object.put("size", objectSummary.getSize() / 1024); object.put("time", getDateTime_Str(objectSummary.getLastModified())); object.put("url", file_url + "/" + objectSummary.getKey()); objectSummaryList.add(object); } } // 遍历所有commonPrefix。 System.out.println("CommonPrefixes:"); List commonPrefixList = new ArrayList<>(); for (String commonPrefix : listing.getCommonPrefixes()) { JSONObject object = new JSONObject(); object.put("folderpath", commonPrefix); commonPrefixList.add(object); } // 关闭OSSClient。 ossClient.shutdown(); JSONObject object = new JSONObject(); object.put("files", objectSummaryList); object.put("folder", commonPrefixList); return getSucReturnObject().setData(object).toString(); } }