|
@@ -7,14 +7,16 @@ import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
|
|
import cn.iselab.mooctest.site.web.logic.OSSLogic;
|
|
import cn.iselab.mooctest.site.web.logic.OSSLogic;
|
|
import com.aliyun.oss.HttpMethod;
|
|
import com.aliyun.oss.HttpMethod;
|
|
import com.aliyun.oss.OSSClient;
|
|
import com.aliyun.oss.OSSClient;
|
|
-import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
|
|
|
-import com.aliyun.oss.model.OSSObject;
|
|
|
|
|
|
+import com.aliyun.oss.model.*;
|
|
import com.aliyuncs.DefaultAcsClient;
|
|
import com.aliyuncs.DefaultAcsClient;
|
|
import com.aliyuncs.exceptions.ClientException;
|
|
import com.aliyuncs.exceptions.ClientException;
|
|
import com.aliyuncs.http.MethodType;
|
|
import com.aliyuncs.http.MethodType;
|
|
import com.aliyuncs.http.ProtocolType;
|
|
import com.aliyuncs.http.ProtocolType;
|
|
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
|
|
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
|
|
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
|
|
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
|
|
|
|
+import net.lingala.zip4j.core.ZipFile;
|
|
|
|
+import net.lingala.zip4j.model.ZipParameters;
|
|
|
|
+import net.lingala.zip4j.util.Zip4jConstants;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.io.FileUtils;
|
|
import org.apache.commons.io.FilenameUtils;
|
|
import org.apache.commons.io.FilenameUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -22,9 +24,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
-import java.io.File;
|
|
|
|
-import java.io.IOException;
|
|
|
|
-import java.io.InputStream;
|
|
|
|
|
|
+import java.io.*;
|
|
import java.net.URL;
|
|
import java.net.URL;
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -58,6 +58,8 @@ public class OSSLogicImpl implements OSSLogic {
|
|
|
|
|
|
private long maxUploadSizeInMb = 100 * 1024 * 1204; //100MB
|
|
private long maxUploadSizeInMb = 100 * 1024 * 1204; //100MB
|
|
private String UPLOADED_PATH="/download/";
|
|
private String UPLOADED_PATH="/download/";
|
|
|
|
+ private String SAVE_PATH="/var/www/download/";
|
|
|
|
+ private String ZIP_PATH="zip/";
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public String getAppPresignUrl(String appName) {
|
|
public String getAppPresignUrl(String appName) {
|
|
@@ -160,8 +162,7 @@ public class OSSLogicImpl implements OSSLogic {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean downloadByUrl(String url,String filePath) throws Exception {
|
|
|
|
- String fileName = FilenameUtils.getName(url);
|
|
|
|
|
|
+ public boolean downloadByUrl(String url,String filePath,String fileName) throws Exception {
|
|
if (fileName == null)
|
|
if (fileName == null)
|
|
return false;
|
|
return false;
|
|
File directory = new File(filePath);
|
|
File directory = new File(filePath);
|
|
@@ -202,4 +203,41 @@ public class OSSLogicImpl implements OSSLogic {
|
|
file.transferTo(saveFile);
|
|
file.transferTo(saveFile);
|
|
return fileName;
|
|
return fileName;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String zipFile(Long examId,Long workerId,String fileName) throws Exception{
|
|
|
|
+ File file=new File(SAVE_PATH+ZIP_PATH+fileName+".zip");
|
|
|
|
+ if(!file.exists()){
|
|
|
|
+ File folder=new File(FileUtils.getUserDirectory()+"/"+fileName);
|
|
|
|
+ if(!folder.exists())
|
|
|
|
+ folder.mkdirs();
|
|
|
|
+ ossClient = new OSSClient(endPoint, accessKeyId, accessKeySecret);
|
|
|
|
+ ObjectListing listing=ossClient.listObjects(bucketNameDev,"data/answers"+"/"+examId+"/"+workerId+"/");
|
|
|
|
+ List<OSSObjectSummary> sums = listing.getObjectSummaries();
|
|
|
|
+ for (OSSObjectSummary s : sums) {
|
|
|
|
+ String key=s.getKey();
|
|
|
|
+ String name=key.split("/")[key.split("/").length - 1];
|
|
|
|
+ ossClient.getObject(new GetObjectRequest(bucketNameDev, key), new File(FileUtils.getUserDirectory()+"/"+fileName+"/"+name));
|
|
|
|
+ }
|
|
|
|
+ ossClient.shutdown();
|
|
|
|
+ ZipFile zipFile=new ZipFile(file);
|
|
|
|
+ ZipParameters parameters=new ZipParameters();
|
|
|
|
+ parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
|
|
|
|
+ parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
|
|
|
|
+ zipFile.addFolder(folder,parameters);
|
|
|
|
+ FileUtils.deleteQuietly(folder);
|
|
|
|
+ }
|
|
|
|
+ return UPLOADED_PATH+ZIP_PATH+fileName+".zip";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public String zipFilePath(String fileName){
|
|
|
|
+ File file=new File(SAVE_PATH+ZIP_PATH+fileName+".zip");
|
|
|
|
+ if(file.exists()){
|
|
|
|
+ return UPLOADED_PATH+ZIP_PATH+fileName+".zip";
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|