Browse Source

oss测试完毕

insomniaLee 4 years ago
parent
commit
bc002ca963

+ 19 - 0
pom.xml

@@ -173,6 +173,25 @@
             <artifactId>spring-cloud-starter-zookeeper-config</artifactId>
         </dependency>
 
+        <!-- Aliyun OSS -->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.10.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-sts</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>2.1.7</version>
+        </dependency>
+        <!-- OSS END -->
+
+
     </dependencies>
 
     <dependencyManagement>

+ 3 - 2
src/main/java/com/mooctest/controller/TaskController.java

@@ -174,10 +174,11 @@ public class TaskController {
     }
 
     @PostMapping("/addCrowdTask")
+    @ResponseBody
     public String addCrowdTask2(@RequestParam("name")String name,@RequestParam("description")String description,
                                 @RequestParam("time")String time,@RequestParam("type")String type,
-                                @RequestParam("webUrl")String webUrl,@RequestParam("apk")MultipartFile apk,
+                                @RequestParam("webUrl")String webUrl,@RequestParam(value = "apk",required = false)MultipartFile apk,
                                 @RequestParam("requirement") MultipartFile requirement,@RequestParam("threePage") MultipartFile threePage){
-        return "success";
+        return taskService.addCrowdTask(name, description, time, type, webUrl, apk, requirement, threePage);
     }
 }

+ 15 - 0
src/main/java/com/mooctest/dao2/CrowdTaskDao.java

@@ -0,0 +1,15 @@
+package com.mooctest.dao2;
+
+import com.mooctest.model.CrowdTask;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import java.util.List;
+
+
+public interface CrowdTaskDao extends MongoRepository<CrowdTask, String> {
+
+    CrowdTask findFirstByOrderByIdDesc();
+
+    @Override
+    List<CrowdTask> findAll();
+}

+ 26 - 0
src/main/java/com/mooctest/model/CrowdTask.java

@@ -0,0 +1,26 @@
+package com.mooctest.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Document(collection = "exam")
+public class CrowdTask {
+    @Id
+    private String id;
+
+    private String json;
+
+    private String app_name;
+
+    private String paper_type;
+
+    private String test_type;
+
+    private String description;
+}

+ 1 - 0
src/main/java/com/mooctest/service/FileService.java

@@ -6,4 +6,5 @@ public interface FileService {
 
     //上传一个file 返回一个String
     public String uploadFile(MultipartFile file);
+    public String uploadJson(String content,long taskId);
 }

+ 61 - 1
src/main/java/com/mooctest/service/TaskService.java

@@ -10,9 +10,12 @@ import com.mongodb.client.MongoCursor;
 import com.mongodb.client.MongoDatabase;
 import com.mooctest.dao.MasterReportDao;
 import com.mooctest.dao.TaskDao;
+import com.mooctest.dao2.CrowdTaskDao;
 import com.mooctest.data.TaskDTO;
+import com.mooctest.model.CrowdTask;
 import com.mooctest.model.Task;
 import com.mooctest.util.EncodeUtil;
+import com.mooctest.util.TaskUtil;
 import com.mooctest.util.TimeUtil;
 import org.bson.Document;
 import org.springframework.beans.BeanUtils;
@@ -20,14 +23,21 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
@@ -54,11 +64,17 @@ public class TaskService {
     TaskDao taskDao;
 
     @Autowired
+    CrowdTaskDao crowdTaskDao;
+
+    @Autowired
     BugReportService bugReportService;
 
     @Autowired
     BugDataService bugDataService;
 
+    @Autowired
+    FileService fileService;
+
     @Value("${task.info.addr}")
     String taskInfoAddr;
 
@@ -251,8 +267,38 @@ public class TaskService {
         return res;
     }
 
-    public void addCrowdTask(){
+    public String addCrowdTask(String name,String description,String time,String type,String webUrl,MultipartFile apk,MultipartFile requirement,MultipartFile threePage){
+        if (requirement==null||requirement.isEmpty()) return "请提交需求文档";
+        if(threePage ==null || threePage.isEmpty()) return "请提交三级页面";
+        if(type.equals(TaskUtil.TaskType.MOBILE.getTaskType())&&(apk==null ||apk.isEmpty()))return "请提交APK文件";
+        String threePageUrl = fileService.uploadFile(threePage);
+        String requirementUrl = fileService.uploadFile(requirement);
+        try {
+            boolean flag = createCrowdTest(threePageUrl,threePage.getOriginalFilename(),"",getMaxCaseId()+1,type,description,name);
+            return flag ?"success":"创建失败";
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "创建众测失败";
+        }
+    }
 
+    public boolean createCrowdTest(String file, String fileName, String paperType, Long caseId, String testType, String description, String appName) throws Exception {
+        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
+        params.add("file", file);
+        params.add("file_name", fileName);
+        params.add("paper_type", paperType);
+        params.add("case_id", caseId + "");
+        params.add("test_type", testType);
+        params.add("description", description);
+        params.add("app_name", appName);
+        RestTemplate restTemplate = new RestTemplate();
+        restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity
+                ("http://" + reportHost  + "/Bug/api/extra/uploadExamUrl", params, String.class);
+        if (responseEntity.getStatusCode().equals(HttpStatus.OK)){
+            fileService.uploadJson(responseEntity.getBody(),caseId);
+            return true;
+        }else return false;
     }
 
     public String getEncodeTaskReportUrl(long examId,long caseId){
@@ -281,4 +327,18 @@ public class TaskService {
         taskDTO.setNumOfUndeal(undealBugs);
         return taskDTO;
     }
+
+    private long getMaxCaseId(){
+        List<CrowdTask> list = crowdTaskDao.findAll();
+        long max =0;
+        long temp =0;
+        for(CrowdTask task : list){
+            temp=Long.parseLong(task.getId());
+            max=temp>max?temp:max;
+        }
+
+//        CrowdTask task = crowdTaskDao.findFirstByOrderByIdDesc();
+
+        return max;
+    }
 }

+ 48 - 1
src/main/java/com/mooctest/service/impl/NginxFileService.java

@@ -1,17 +1,64 @@
 package com.mooctest.service.impl;
 
 import com.mooctest.service.FileService;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.*;
+
 @Service
 @ConditionalOnExpression("${useOss}==false")
 public class NginxFileService implements FileService {
 
+    @Value("filePath")
+    private String filePath;
+    @Value("urlPath")
+    private String urlPath;
 
     @Override
     public String uploadFile(MultipartFile file) {
-        return null;
+        String fileName = System.currentTimeMillis()+ file.getOriginalFilename();
+        File saveFile = new File(filePath + fileName);
+        //判断文件父目录是否存在
+//        System.out.println(saveFile.getParentFile());
+        if (!saveFile.getParentFile().exists()) {
+            saveFile.getParentFile().mkdirs();
+        }
+        try {
+            file.transferTo(saveFile);
+            return urlPath+fileName;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        NginxFileService n=new NginxFileService();
+        System.out.println(n.uploadJson("adfasfasdf",324));
+    }
+
+    @Override
+    public String uploadJson(String content,long taskId) {
+        String fileName =  taskId+".json";
+        File saveFile = new File(filePath + fileName);
+        //判断文件父目录是否存在
+//        System.out.println(saveFile.getParentFile());
+        if (!saveFile.getParentFile().exists()) {
+            saveFile.getParentFile().mkdirs();
+        }
+        try {
+            Writer write = new OutputStreamWriter(new FileOutputStream(saveFile), "UTF-8");
+            write.write(content);
+            write.flush();
+            write.close();
+            return urlPath+fileName;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
     }
 }

+ 28 - 1
src/main/java/com/mooctest/service/impl/OssFileService.java

@@ -1,15 +1,42 @@
 package com.mooctest.service.impl;
 
 import com.mooctest.service.FileService;
+import com.mooctest.util.OSSClientUtil;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.*;
+
 @Service
 @ConditionalOnExpression("${useOss}==true")
 public class OssFileService implements FileService {
     @Override
     public String uploadFile(MultipartFile file) {
-        return null;
+        return OSSClientUtil.uploadSingleFile(file);
+    }
+
+    public static void main(String[] args) {
+        OssFileService o = new OssFileService();
+        System.out.println(o.uploadJson("234",234));
+    }
+
+    @Override
+    public String uploadJson(String content, long taskId) {
+        String filePath = System.getProperty("user.dir")+"/";
+        String fileName =  taskId+".json";
+        File saveFile = new File(filePath + fileName);
+        try {
+            Writer write = new OutputStreamWriter(new FileOutputStream(saveFile), "UTF-8");
+            write.write(content);
+            write.flush();
+            write.close();
+            return OSSClientUtil.uploadSingleFile(saveFile);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
     }
+
+
 }

+ 381 - 0
src/main/java/com/mooctest/util/OSSClientUtil.java

@@ -0,0 +1,381 @@
+package com.mooctest.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.aliyun.oss.OSSClient;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @class:AliyunOSSClientUtil
+ * @descript:java使用阿里云OSS存储对象上传图片
+ *
+ */
+public class OSSClientUtil {
+    //log日志
+    private static Logger logger = LoggerFactory.getLogger(OSSClientUtil.class);
+
+
+    //阿里云API的内或外网域名
+    private static String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
+    //阿里云API的密钥Access Key ID
+    private static String ACCESS_KEY_ID="LTAI4FdrT3HsfdR5edBVN7ws";
+    //阿里云API的密钥Access Key Secret
+    private static String ACCESS_KEY_SECRET="yroxrpm46DzTyzHrLBZzS3MRNIicP6";
+    //阿里云API的bucket名称
+    private static String BACKET_NAME="mooctest-site";
+    //阿里云API的文件夹名称
+    private static String FOLDER="temp";
+
+
+
+
+    /**
+     * 获取阿里云OSS客户端对象
+     * @return ossClient
+     */
+    public static  OSSClient getOSSClient(){
+        return new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
+    }
+
+    /**
+     * 创建存储空间
+     * @param ossClient      OSS连接
+     * @param bucketName 存储空间
+     * @return
+     */
+    private  static String createBucketName(OSSClient ossClient,String bucketName){
+        //存储空间
+        final String bucketNames=bucketName;
+        if(!ossClient.doesBucketExist(bucketName)){
+            //创建存储空间
+            Bucket bucket=ossClient.createBucket(bucketName);
+            logger.info("创建存储空间成功");
+            return bucket.getName();
+        }
+        return bucketNames;
+    }
+
+    /**
+     * 创建存储空间
+     * @param ossClient      OSS连接
+     * @param bucketName 存储空间
+     * @return
+     */
+    private  static void putBucketACL(OSSClient ossClient,String bucketName){
+        //存储空间
+        final String bucketNames=bucketName;
+        System.out.println(ossClient.doesBucketExist(bucketName));
+        if(ossClient.doesBucketExist(bucketName)){
+            //修改存储空间的权限
+            ossClient.setBucketAcl(bucketNames, CannedAccessControlList.PublicRead);
+            logger.info("创建存储空间成功");
+        }
+    }
+
+    /**
+     * 删除存储空间buckName
+     * @param ossClient  oss对象
+     * @param bucketName  存储空间
+     */
+    private static  void deleteBucket(OSSClient ossClient, String bucketName){
+        ossClient.deleteBucket(bucketName);
+        logger.info("删除" + bucketName + "Bucket成功");
+    }
+
+    /**
+     * 创建模拟文件夹
+     * @param ossClient oss连接
+     * @param bucketName 存储空间
+     * @param folder   模拟文件夹名如"qj_nanjing/"
+     * @return  文件夹名
+     */
+    private  static String createFolder(OSSClient ossClient,String bucketName,String folder){
+        //文件夹名
+        final String keySuffixWithSlash =folder;
+        //判断文件夹是否存在,不存在则创建
+        if(!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)){
+            //创建文件夹
+            ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
+            logger.info("创建文件夹成功");
+            //得到文件夹名
+            OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);
+            String fileDir=object.getKey();
+            return fileDir;
+        }
+        return keySuffixWithSlash;
+    }
+
+    /**
+     * 根据key删除OSS服务器上的文件
+     * @param ossClient  oss连接
+     * @param bucketName  存储空间
+     * @param folder  模拟文件夹名 如"qj_nanjing/"
+     * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
+     */
+    private static void deleteFile(OSSClient ossClient, String bucketName, String folder, String key){
+        ossClient.deleteObject(bucketName, folder + key);
+        logger.info("删除" + bucketName + "下的文件" + folder + key + "成功");
+    }
+    /**
+     * 根据key删除OSS服务器上的文件
+     * @param key Bucket下的文件的路径名+文件名 如:"upload/cake.jpg"
+     */
+    private static void deleteFile(String key){
+        OSSClient ossClient = getOSSClient();
+        ossClient.deleteObject(BACKET_NAME,key);
+        logger.info("删除" + BACKET_NAME + "下的文件" + key + "成功");
+    }
+
+    private static void uploadFile2OSS(){
+        // Endpoint以杭州为例,其它Region请按实际情况填写。
+        String endpoint = ENDPOINT;
+        // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
+        String accessKeyId = ACCESS_KEY_ID;
+        String accessKeySecret = ACCESS_KEY_SECRET;
+
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+
+        // 创建PutObjectRequest对象。
+        PutObjectRequest putObjectRequest = new PutObjectRequest(BACKET_NAME,
+                System.currentTimeMillis()+"",
+                new File("/Users/insomnialee/Pictures/五等分/13.png"));
+
+        // 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
+        // ObjectMetadata metadata = new ObjectMetadata();
+        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
+        // metadata.setObjectAcl(CannedAccessControlList.Private);
+        // putObjectRequest.setMetadata(metadata);
+
+        // 上传文件。
+        PutObjectResult res = ossClient.putObject(putObjectRequest);
+
+
+        // 关闭OSSClient。
+        ossClient.shutdown();
+    }
+
+    /**
+     * 上传图片至OSS
+     * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
+     * @return String 返回访问路径
+     * */
+    private static  String uploadObject2OSS(File file) {
+        OSSClient ossClient = getOSSClient();
+        String resultStr = null;
+        String fileName = null;
+        try {
+            //以输入流的形式上传文件
+            InputStream is = new FileInputStream(file);
+            //文件名  如果出现重复,则重新生成名字,再上传
+            fileName = file.getName();
+//            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
+//                fileName = getfileName(file.getName());
+//            }
+            //文件大小
+            Long fileSize = file.length();
+            //创建上传Object的Metadata
+            ObjectMetadata metadata = new ObjectMetadata();
+            //上传的文件的长度
+            metadata.setContentLength(is.available());
+            //指定该Object被下载时的网页的缓存行为
+//            metadata.setCacheControl("no-cache");
+            //指定该Object下设置Header
+//            metadata.setHeader("Pragma", "no-cache");
+            //指定该Object被下载时的内容编码格式
+//            metadata.setContentEncoding("utf-8");
+            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+            //如果没有扩展名则填默认值application/octet-stream
+//            metadata.setContentType(getContentType(fileName));
+            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+            //上传文件   (上传文件流的形式)
+            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER +"/"+ fileName, is, metadata);
+            resultStr = putResult.getETag();
+            logger.info("上传阿里云OSS服务器成功." +resultStr);
+            //解析结果
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+        }
+        return "http://"+BACKET_NAME+"."+ENDPOINT+"/"+FOLDER +"/"+ fileName;
+    }
+    /**
+     * 上传图片至OSS
+     * @param in 上传文件流
+     * @return String 返回访问路径,图片存储KEY
+     * */
+    private static  String uploadObject2OSS(InputStream in,String name,Long size) {
+        OSSClient ossClient = getOSSClient();
+        String resultStr = null;
+        String fileName = null;
+        try {
+            //文件名  如果出现重复,则重新生成名字,再上传
+            fileName = getfileName(name);
+            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
+                fileName = getfileName(name);
+            }
+            //文件大小
+            Long fileSize = size;
+            //创建上传Object的Metadata
+            ObjectMetadata metadata = new ObjectMetadata();
+            //上传的文件的长度
+            metadata.setContentLength(in.available());
+            //指定该Object被下载时的网页的缓存行为
+            metadata.setCacheControl("no-cache");
+            //指定该Object下设置Header
+            metadata.setHeader("Pragma", "no-cache");
+            //指定该Object被下载时的内容编码格式
+            metadata.setContentEncoding("utf-8");
+            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+            //如果没有扩展名则填默认值application/octet-stream
+            metadata.setContentType(getContentType(fileName));
+            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+            //上传文件   (上传文件流的形式)
+            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + fileName, in, metadata);
+            resultStr = putResult.getETag();
+            logger.info("上传阿里云OSS服务器成功." +resultStr);
+            //解析结果
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+        }
+        return BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + fileName;
+    }
+
+    /**
+     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
+     * @param fileName 文件名
+     * @return 文件的contentType
+     */
+    private static  String getContentType(String fileName){
+        //文件的后缀名
+        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
+        if(".bmp".equalsIgnoreCase(fileExtension)) {
+            return "image/bmp";
+        }
+        if(".gif".equalsIgnoreCase(fileExtension)) {
+            return "image/gif";
+        }
+        if(".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)  || ".png".equalsIgnoreCase(fileExtension) ) {
+            return "image/jpeg";
+        }
+        if(".html".equalsIgnoreCase(fileExtension)) {
+            return "text/html";
+        }
+        if(".txt".equalsIgnoreCase(fileExtension)) {
+            return "text/plain";
+        }
+        if(".vsd".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.visio";
+        }
+        if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
+            return "application/vnd.ms-powerpoint";
+        }
+        if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
+            return "application/msword";
+        }
+        if(".xml".equalsIgnoreCase(fileExtension)) {
+            return "text/xml";
+        }
+        //默认返回类型
+        return "image/jpeg";
+    }
+
+    /**
+     * 修改文件名
+     * @param fileName 文件名
+     * @return 文件的新名称
+     */
+    private static  String getfileName(String fileName){
+        String fileType = fileName.substring(fileName.lastIndexOf("."), fileName.length());
+        String name = System.currentTimeMillis()+fileType;
+        System.out.println(fileName+"----"+name);
+        return name;
+
+    }
+
+    /**
+     * 上传图片至OSS
+     * @param file 上传文件(文件全路径如:D:\\image\\cake.jpg)
+     * @return String 返回访问路径
+     * */
+    private  static  String uploadMultipartFile2OSS(MultipartFile file) {
+        OSSClient ossClient = getOSSClient();
+        String resultStr = null;
+        String fileName = null;
+        try {
+            //以输入流的形式上传文件
+            InputStream is = file.getInputStream();
+            //文件名  如果出现重复,则重新生成名字,再上传
+            fileName = getfileName(file.getOriginalFilename());
+//            if(ossClient.doesObjectExist(BACKET_NAME, FOLDER + fileName)){
+//                fileName = getfileName(file.getName());
+//            }
+            //文件大小
+            Long fileSize = file.getSize();
+            //创建上传Object的Metadata
+            ObjectMetadata metadata = new ObjectMetadata();
+            //上传的文件的长度
+            metadata.setContentLength(is.available());
+            //指定该Object被下载时的网页的缓存行为
+//            metadata.setCacheControl("no-cache");
+            //指定该Object下设置Header
+//            metadata.setHeader("Pragma", "no-cache");
+            //指定该Object被下载时的内容编码格式
+//            metadata.setContentEncoding("utf-8");
+            //文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,
+            //如果没有扩展名则填默认值application/octet-stream
+//            metadata.setContentType(getContentType(fileName));
+            //指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)
+            metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");
+            //上传文件   (上传文件流的形式)
+            PutObjectResult putResult = ossClient.putObject(BACKET_NAME, FOLDER + "/"+ fileName, is, metadata);
+            resultStr = putResult.getETag();
+            logger.info("上传阿里云OSS服务器成功." +resultStr);
+            //解析结果
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);
+        }
+        return "http://"+BACKET_NAME+"."+ENDPOINT+"/"+FOLDER + "/" + fileName;
+    }
+
+    public static  String uploadSingleFile(MultipartFile file){
+        OSSClient ossClient=OSSClientUtil.getOSSClient();
+        return uploadMultipartFile2OSS(file);
+    }
+
+    public static  String uploadSingleFile(File file){
+//        OSSClient ossClient=OSSClientUtil.getOSSClient();
+        return uploadObject2OSS(file);
+    }
+
+    //测试
+//    public static void main(String[] args) throws Exception {
+//        uploadFile2OSS();
+//        //初始化OSSClient
+//        OSSClient ossClient=OSSClientUtil.getOSSClient();
+//        //上传文件
+//        String files="/Users/insomnialee/Pictures/五等分/13.png";
+//        String[] file=files.split(",");
+//        for(String filename:file){
+//            //System.out.println("filename:"+filename);
+//            File filess=new File(filename);
+//            String md5key = OSSClientUtil.uploadObject2OSS(filess);
+//            System.out.println("文件地址:" + md5key);
+//        }
+//    }
+
+
+}

+ 25 - 0
src/main/java/com/mooctest/util/TaskUtil.java

@@ -0,0 +1,25 @@
+package com.mooctest.util;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class TaskUtil {
+
+
+    public enum TaskType {
+
+        MOBILE("移动应用"), // 未审核
+        WEB("Web应用"); // 已审核
+
+        private String taskType;
+
+        private TaskType(String taskType) {
+            this.taskType = taskType;
+        }
+
+        public String getTaskType() {
+            return taskType;
+        }
+    }
+
+}

+ 5 - 5
src/main/resources/templates/addCrowdTask.html

@@ -51,7 +51,7 @@
         <div class="box box-primary" >
             <div class="box-header with-border">
                 <h3 class="box-title">基本信息</h3>
-                <button class="btn btn-success pull-right" onclick="">
+                <button class="btn btn-success pull-right" onclick="addTask()">
                     生成
                 </button>
             </div>
@@ -192,7 +192,7 @@
         data.append('time',$('#reservationtime').val());
         data.append('type',$('#testType').val());
         data.append('webUrl',$('#webUrl').val());
-        data.append("apk",document.getElementById('excel_file').files[0])
+        if($('#testType').val() == '移动应用') data.append("apk",document.getElementById('testApplication').files[0])
         data.append("requirement",document.getElementById('testRequirement').files[0])
         data.append("threePage",document.getElementById('threePage').files[0])
         $.ajax({
@@ -202,16 +202,16 @@
             processData: false,
             contentType: false,
             success: function (result) {
-                if(result['status'] == 'fail'){
+                if(result != 'success'){
                     $.notify({
-                        message: result['message']
+                        message: result
                     },{
                         // settings
                         delay: 100,
                         timer: 1000,
                         type: 'error'
                     });
-                }else if(result['status'] == 'success'){
+                }else {
 
                     $.notify({
                         message: '添加成功'