Parcourir la source

新接口uploadExamUrl,与原来的uploadExam相比,不同处在于参数由文件流改为文件url

xujiawei il y a 5 ans
Parent
commit
9058c5482e
1 fichiers modifiés avec 70 ajouts et 0 suppressions
  1. 70 0
      src/main/java/edu/nju/controller/ExtraController.java

+ 70 - 0
src/main/java/edu/nju/controller/ExtraController.java

@@ -21,6 +21,13 @@ import edu.nju.entities.TestCase;
 import edu.nju.service.ExtraService;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.net.URL;
+import java.io.BufferedInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URLConnection;
+
 @Controller
 @RequestMapping(value = "/extra")
 @CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true")
@@ -195,6 +202,69 @@ public class ExtraController {
 	}
 
 	/**
+	 *
+	 * @param file 文件oss的url
+	 * @param file_name
+	 * @param paper_type
+	 * @param case_id
+	 * @param test_type
+	 * @param description
+	 * @param app_name
+	 * @return
+	 */
+	@RequestMapping(value = "/uploadExamUrl", method = RequestMethod.POST)
+	@ResponseBody
+	public String uploadExamUrl(String file, String file_name, String paper_type,
+								String case_id, String test_type, String description, String app_name) {
+		try {
+
+			File dest = new File("/Users/hannatao/Downloads/" + file_name);
+			if(!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); }
+			//从oss下载文件
+			// 统一资源
+			URL url = new URL(file);
+			// 连接类的父类,抽象类
+			URLConnection urlConnection = url.openConnection();
+			// http的连接类
+			HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
+			//设置超时
+			httpURLConnection.setConnectTimeout(1000*5);
+			//设置请求方式,默认是GET
+//          httpURLConnection.setRequestMethod("GET");
+			// 设置字符编码
+			httpURLConnection.setRequestProperty("Charset", "UTF-8");
+			// 打开到此 URL引用的资源的通信链接(如果尚未建立这样的连接)。
+			httpURLConnection.connect();
+			// 文件大小
+			int fileLength = httpURLConnection.getContentLength();
+
+			// 建立链接从请求中获取数据
+			URLConnection con = url.openConnection();
+			BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
+			// 指定文件名称(有需求可以自定义)
+			// 指定存放位置(有需求可以自定义)
+
+
+			OutputStream out = new FileOutputStream(dest);
+			int size = 0;
+			int len = 0;
+			byte[] buf = new byte[2048];
+			while ((size = bin.read(buf)) != -1) {
+				len += size;
+				out.write(buf, 0, size);
+			}
+			// 关闭资源
+			bin.close();
+			out.close();
+			String json = extraService.saveExam(case_id, dest.getPath(), app_name, paper_type, test_type, description);
+			return json;
+		} catch (IOException e) {
+			e.printStackTrace();
+			return "";
+		}
+	}
+
+	/**
 	 * 47.99.140.117:9001/Bug/api/extra/getExamList
 	 *
 	 * @return 200 成功; 500 失败