From 4716fae170fa719733d7c4345e3a17cce437617c Mon Sep 17 00:00:00 2001 From: 2821744554@qq.com <2821744554@qq.com> Date: Fri, 20 Mar 2020 08:54:55 +0800 Subject: [PATCH] 1、增加网关负载lb指向 2、文件服务增加21世纪文档生成接口 --- cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java | 2 ++ cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java | 4 ++++ cloud/autho/src/main/resources/application.yaml | 2 +- cloud/autho/src/main/resources/mapper/UserMapper.xml | 4 ++++ cloud/fIle-center/pom.xml | 12 ++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java | 25 +++++++++++++++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java | 3 +++ cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java | 9 +++++++++ cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java | 1 + cloud/getaway/src/main/resources/application.yml | 15 ++++++++------- 16 files changed, 577 insertions(+), 23 deletions(-) create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java create mode 100644 cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java diff --git a/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java b/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java index 73a09a7..7db8353 100644 --- a/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java +++ b/cloud/autho/src/main/java/com/sincere/autho/mapper/UserMapper.java @@ -7,4 +7,6 @@ public interface UserMapper { String loginTeacher(LoginReqDto loginReqDto) ; String loginStudent(LoginReqDto loginReqDto) ; + + String loginStudentOthName(LoginReqDto loginReqDto); } diff --git a/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java b/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java index b335637..4816a46 100644 --- a/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java +++ b/cloud/autho/src/main/java/com/sincere/autho/service/impl/LoginServiceImpl.java @@ -5,6 +5,7 @@ import com.sincere.autho.mapper.UserMapper; import com.sincere.autho.service.LoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; @Service public class LoginServiceImpl implements LoginService { @@ -17,6 +18,9 @@ public class LoginServiceImpl implements LoginService { String userId = "" ; if(loginReqDto.getUserType() == 2){ userId = userMapper.loginStudent(loginReqDto); + if (StringUtils.isEmpty(userId)){//用othername登录 + userId = userMapper.loginStudentOthName(loginReqDto); + } }else { userId = userMapper.loginTeacher(loginReqDto); } diff --git a/cloud/autho/src/main/resources/application.yaml b/cloud/autho/src/main/resources/application.yaml index 6f2c3f6..ecd8a7f 100644 --- a/cloud/autho/src/main/resources/application.yaml +++ b/cloud/autho/src/main/resources/application.yaml @@ -19,7 +19,7 @@ ribbon: ConnectTimeout: 5000 eureka: instance: - hostname: localhost + hostname: 121.40.30.78 lease-expiration-duration-in-seconds: 60 lease-renewal-interval-in-seconds: 10 client: diff --git a/cloud/autho/src/main/resources/mapper/UserMapper.xml b/cloud/autho/src/main/resources/mapper/UserMapper.xml index 61e206a..5789ebb 100644 --- a/cloud/autho/src/main/resources/mapper/UserMapper.xml +++ b/cloud/autho/src/main/resources/mapper/UserMapper.xml @@ -11,4 +11,8 @@ select user_id from SZ_User where name = #{account} and pass = #{password} + + diff --git a/cloud/fIle-center/pom.xml b/cloud/fIle-center/pom.xml index d2976c9..7aac998 100644 --- a/cloud/fIle-center/pom.xml +++ b/cloud/fIle-center/pom.xml @@ -43,6 +43,18 @@ 2.8.3 + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + poi-ooxml + 4.1.2 + + diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java index 876df73..9a71f30 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/control/FileControl.java @@ -1,21 +1,44 @@ package com.sincere.file.control; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.ValueFilter; import com.sincere.file.model.FileInfo; +import com.sincere.file.model.question.QuestionDataModel; import com.sincere.file.service.FileService; import com.sincere.file.utils.FileUtil; +import com.sincere.file.utils.PoiUtils; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.poi.xwpf.usermodel.Document; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.configurationprocessor.json.JSONException; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; @RestController @Api(tags = "文件管理") @RequestMapping(value = "file/*") public class FileControl { + Logger logger = LoggerFactory.getLogger(FileControl.class); + @Autowired FileService fileService; @@ -31,27 +54,45 @@ public class FileControl { } - @PostMapping("fileUpload1") - @ApiOperation("上传文件") - public String fileUpload1(@RequestParam("file") MultipartFile file) throws Exception { - -// String ossPath = request.getHeader("ossPath");//oss的二级目录 -// -// FileInfo fileInfo = fileService.upload(file, ossPath); + @DeleteMapping("deleteFile/{fileName}") + @ApiOperation("删除文件") + public boolean deleteFile(@PathVariable String fileName, HttpServletRequest request) { + String ossPath = request.getHeader("ossPath");//oss的二级目录 + fileService.delete(fileName, ossPath); - return "111"; + System.out.println("fileName:" + fileName + "----ossPath:" + ossPath); + return true; } - @DeleteMapping("deleteFile/{fileName}") - @ApiOperation("删除文件") - public boolean deleteFile(@PathVariable String fileName,HttpServletRequest request){ - String ossPath = request.getHeader("ossPath");//oss的二级目录 - fileService.delete(fileName,ossPath); + @RequestMapping(value = "getWord", method = RequestMethod.GET) + @ApiOperation("获取21世纪题目") + @ApiImplicitParams( + {@ApiImplicitParam(name = "url",value = "链接")} + + ) + public String getWord(@RequestParam("url") String url) { + + RestTemplate restTemplate = new RestTemplate(); + + String content = restTemplate.getForObject(url, String.class, new HashMap<>()); + +// logger.error("json:{}", content); + + JSONObject jsonObject = JSON.parseObject(content); + JSONObject data = jsonObject.getJSONObject("data"); + JSONArray questions = data.getJSONArray("questions"); + String wordPath = PoiUtils.createWord(questions); + +// QuestionDataModel questionDataModel = JSON.parseObject(content, QuestionDataModel.class); + +// logger.error("questionDataModel:{}", questionDataModel); + + return fileService.uploadLocalFile(new File(wordPath), "test"); - System.out.println("fileName:"+fileName+"----ossPath:"+ossPath); - return true; } + + } diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java new file mode 100644 index 0000000..b2a9e34 --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/OptionsModel.java @@ -0,0 +1,56 @@ +package com.sincere.file.model.question; + +import java.io.Serializable; + +public class OptionsModel implements Serializable { + + private String A; + + private String B; + + private String C; + + private String D; + + public String getA() { + return A; + } + + public void setA(String a) { + A = a; + } + + public String getB() { + return B; + } + + public void setB(String b) { + B = b; + } + + public String getC() { + return C; + } + + public void setC(String c) { + C = c; + } + + public String getD() { + return D; + } + + public void setD(String d) { + D = d; + } + + @Override + public String toString() { + return "OptionsModel{" + + "A='" + A + '\'' + + ", B='" + B + '\'' + + ", C='" + C + '\'' + + ", D='" + D + '\'' + + '}'; + } +} diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java new file mode 100644 index 0000000..da825ea --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionDataModel.java @@ -0,0 +1,50 @@ +package com.sincere.file.model.question; + +import java.io.Serializable; +import java.util.List; + +public class QuestionDataModel implements Serializable { + + private int code; + + private String msg; + + private Questions data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String isMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getMsg() { + return msg; + } + + public Questions getData() { + return data; + } + + public void setData(Questions data) { + this.data = data; + } + + @Override + public String toString() { + return "QuestionDataModel{" + + "code=" + code + + ", msg=" + msg + + ", data=" + data + + '}'; + } +} diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java new file mode 100644 index 0000000..4a92f84 --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/QuestionModel.java @@ -0,0 +1,47 @@ +package com.sincere.file.model.question; + +import java.io.Serializable; + +public class QuestionModel implements Serializable { + + + private String channel_type_name; + + private String question_text; + + private OptionsModel options; + + + public String getChannel_type_name() { + return channel_type_name; + } + + public void setChannel_type_name(String channel_type_name) { + this.channel_type_name = channel_type_name; + } + + public String getQuestion_text() { + return question_text; + } + + public void setQuestion_text(String question_text) { + this.question_text = question_text; + } + + public OptionsModel getOptionsModel() { + return options; + } + + public void setOptionsModel(OptionsModel optionsModel) { + this.options = optionsModel; + } + + @Override + public String toString() { + return "QuestionModel{" + + "channel_type_name='" + channel_type_name + '\'' + + ", question_text='" + question_text + '\'' + + ", options=" + options + + '}'; + } +} diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java new file mode 100644 index 0000000..fa84323 --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/model/question/Questions.java @@ -0,0 +1,25 @@ +package com.sincere.file.model.question; + +import java.io.Serializable; +import java.util.List; + +public class Questions implements Serializable { + + + private List questions; + + public List getQuestions() { + return questions; + } + + public void setQuestions(List questions) { + this.questions = questions; + } + + @Override + public String toString() { + return "Questions{" + + "questions=" + questions + + '}'; + } +} diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java index c78b92e..be26bd2 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/FileService.java @@ -3,6 +3,7 @@ package com.sincere.file.service; import com.sincere.file.model.FileInfo; import org.springframework.web.multipart.MultipartFile; +import java.io.File; import java.util.Map; /** @@ -14,6 +15,8 @@ public interface FileService { FileInfo upload(MultipartFile file,String filePath) throws Exception; + String uploadLocalFile(File file,String filePath); + void delete(String fileName,String filePath); FileInfo getById(String id); diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java index ab20f34..f999f37 100644 --- a/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java +++ b/cloud/fIle-center/src/main/java/com/sincere/file/service/impl/AliyunOssServiceImpl.java @@ -1,12 +1,15 @@ package com.sincere.file.service.impl; import com.aliyun.oss.OSSClient; +import com.aliyun.oss.model.PutObjectResult; import com.sincere.file.model.FileInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.File; + /** * @author 作者 owen E-mail: 624191343@qq.com * @version 创建时间:2017年11月12日 上午22:57:51 @@ -48,4 +51,10 @@ public class AliyunOssServiceImpl extends AbstractFileService { return true; } + @Override + public String uploadLocalFile(File file, String filePath) { + PutObjectResult putObjectResult = ossClient.putObject(bucketName,filePath+"/"+file.getName(),file); + System.out.println("uploadLocalFile;"+putObjectResult.toString()); + return domain+"/"+filePath+"/"+file.getName(); + } } diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java b/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java new file mode 100644 index 0000000..5ba7f3c --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/utils/HtmlUtil.java @@ -0,0 +1,56 @@ +package com.sincere.file.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class HtmlUtil { + private static final String regEx_script = "]*?>[//s//S]*?"; // 定义script的正则表达式 + + private static final String regEx_style = "]*?>[//s//S]*?"; // 定义style的正则表达式 + + private static final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 + + private static final String regEx_space = "//s*|/t|/r|/n";//定义空格回车换行符 + + + + /** + + * @param htmlStr + + * @return + + * 删除Html标签 + + */ + + public static String delHTMLTag(String htmlStr) { + + Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); + + Matcher m_script = p_script.matcher(htmlStr); + + htmlStr = m_script.replaceAll(""); // 过滤script标签 + + Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); + + Matcher m_style = p_style.matcher(htmlStr); + + htmlStr = m_style.replaceAll(""); // 过滤style标签 + + Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); + + Matcher m_html = p_html.matcher(htmlStr); + + htmlStr = m_html.replaceAll(""); // 过滤html标签 + + Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE); + + Matcher m_space = p_space.matcher(htmlStr); + + htmlStr = m_space.replaceAll(""); // 过滤空格回车标签 + + return htmlStr.trim(); // 返回文本字符串 + + } +} diff --git a/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java b/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java new file mode 100644 index 0000000..f01a6e7 --- /dev/null +++ b/cloud/fIle-center/src/main/java/com/sincere/file/utils/PoiUtils.java @@ -0,0 +1,243 @@ +package com.sincere.file.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.apache.poi.ooxml.POIXMLTypeLoader; +import org.apache.poi.ooxml.util.DocumentHelper; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xwpf.usermodel.*; +import org.apache.xmlbeans.XmlObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.xml.sax.InputSource; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.*; +import java.net.URL; +import java.net.URLConnection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PoiUtils { + + static Logger logger = LoggerFactory.getLogger(PoiUtils.class); + + public static String createWord(JSONArray questions) { + + XWPFDocument doc = new XWPFDocument();//创建word文档 + + for (int i = 0; i < questions.size(); i++) { + JSONObject question = questions.getJSONObject(i); + String question_text = question.getString("question_text"); + String channel_type_name = question.getString("channel_type_name"); + JSONObject options = question.getJSONObject("options"); + XWPFParagraph p = doc.createParagraph();//新建一个段落 + + p.setAlignment(ParagraphAlignment.LEFT);//设置对其方式 + + if (channel_type_name.contains("img")){ + getImg(channel_type_name,doc,p); + }else { + writeP(HtmlUtil.delHTMLTag(channel_type_name) + "\r\n",p); + } + + question_text=question_text.replaceAll(" "," "); + + if (question_text.contains("img")){ + writeP(question_text.replaceAll("]*/>", " "), p); + getImg(question_text,doc,p); + }else { + writeP(HtmlUtil.delHTMLTag(question_text) + "\r\n", p); + } + + if (null != options) { + String A = options.getString("A"); + if (A.contains("src")) { + writeP("A."+A.replaceAll("]*/>", " "), p); + getImg(A, doc,p); + } else { + writeP( "A." + A+"\r\n", p); + } + + String B = options.getString("B"); + if (B.contains("src")) { + writeP("B."+B.replaceAll("]*/>", " "), p); + getImg(B, doc,p); + } else { + writeP("B." + B+"\r\n", p); + } + + String C = options.getString("C"); + if (C.contains("src")) { + writeP("C."+C.replaceAll("]*/>", " "), p); + getImg(C, doc,p); + } else { + writeP("C." + C+"\r\n", p); + } + + String D = options.getString("D"); + if (D.contains("src")) { + writeP("D."+D.replaceAll("]*/>", " "), p); + getImg(D, doc,p); + } else { + writeP("D." + D+"\r\n", p); + } + } + } + + try { + File file = new File("D://POI"); + if (!file.exists()) file.mkdirs(); + File file1 = new File(file.getAbsolutePath() + File.separator + System.currentTimeMillis()+".doc"); + if (!file1.exists()) file1.createNewFile(); + FileOutputStream out = new FileOutputStream(file1); + doc.write(out); + out.close(); + return file1.getAbsolutePath(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } +return ""; + } + + + private static void writeP( String content, XWPFParagraph p) { + + XWPFRun r = p.createRun();//创建段落文本 + + r.setFontSize(14); + r.setText(content); + r.setColor("000000");//设置颜色 + + } + + + private static void getImg(String imgHtml, XWPFDocument doc,XWPFParagraph paragraph) { +// imgHtml = HtmlUtil.delHTMLTag(imgHtml); +// imgHtml = imgHtml.substring(imgHtml.indexOf("src="), imgHtml.indexOf("style")); +// imgHtml = imgHtml.replace("\"", ""); +// imgHtml = imgHtml.replace("src=", ""); +// logger.error("imgHtml:{}", imgHtml); + Set imgSer = getImgStr(imgHtml); + Iterator iterator = imgSer.iterator(); + while (iterator.hasNext()){ + String imgUrl = iterator.next(); + String imgName = System.currentTimeMillis() + ".png"; + String filePath = "D://POI//Img"; + download(imgUrl, imgName, filePath); + writeImg2Word(filePath + File.separator + imgName, doc,paragraph); + } + + } + + private static String writeImg2Word(String s, XWPFDocument doc,XWPFParagraph paragraph) { + + try { + + XWPFRun run = paragraph.createRun(); + // 获取图片 + InputStream is = new FileInputStream(s); + byte[] bs = IOUtils.toByteArray(is); + BufferedImage image = ImageIO.read(new ByteArrayInputStream(bs)); + + // 获取组装图片宽高,单位pt + StringBuffer dataSize = new StringBuffer(); + dataSize.append("width:").append(image.getWidth()).append("pt;"); + dataSize.append("height:").append(image.getHeight()).append("pt;"); + + // 添加图片到Word中 + String rid = doc.addPictureData(bs, Document.PICTURE_TYPE_PNG); + + StringBuffer xml = new StringBuffer(); + xml.append(""); + xml.append(" \r\n"); + xml.append(" \r\n"); + xml.append(" "); + xml.append("\r\n"); + + InputSource source = new InputSource(new StringReader(xml.toString())); + + org.w3c.dom.Document pictDoc = DocumentHelper.readDocument(source); + // 将信息写入run中 + run.setEmbossed(true); + XmlObject xmlObject = XmlObject.Factory.parse(pictDoc.getDocumentElement(), POIXMLTypeLoader.DEFAULT_XML_OPTIONS); + run.getCTR().set(xmlObject); + run.setText("\r\n"); + + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + public static void download(String urlString, String filename, String savePath) { + try { + + // 构造URL + URL url = new URL(urlString); + // 打开连接 + URLConnection con = url.openConnection(); + //设置请求超时为5s + con.setConnectTimeout(5 * 1000); + // 输入流 + InputStream is = con.getInputStream(); + + // 1K的数据缓冲 + byte[] bs = new byte[1024]; + // 读取到的数据长度 + int len; + // 输出的文件流 + File sf = new File(savePath); + if (!sf.exists()) { + sf.mkdirs(); + } + // 获取图片的扩展名 + String extensionName = filename.substring(filename.lastIndexOf(".") + 1); + // 新的图片文件名 = 编号 +"."图片扩展名 + OutputStream os = new FileOutputStream(sf.getPath() + "\\" + filename); + // 开始读取 + while ((len = is.read(bs)) != -1) { + os.write(bs, 0, len); + } + // 完毕,关闭所有链接 + os.close(); + is.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 得到网页中图片的地址 + */ + private static Set getImgStr(String htmlStr) { + Set pics = new HashSet(); + String img = ""; + Pattern p_image; + Matcher m_image; + String regEx_img = "]*?>"; + p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE); + m_image = p_image.matcher(htmlStr); + while (m_image.find()) { + // 得到数据 + img = m_image.group(); + // 匹配中的src数据 + Matcher m = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(img); + while (m.find()) { + pics.add(m.group(1)); + } + } + return pics; + } + +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java index c496fc8..659e0bc 100644 --- a/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java +++ b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java @@ -2,6 +2,7 @@ package com.sincere.getaway; import org.springframework.boot.SpringApplication; import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; /** * 统一网关配置 diff --git a/cloud/getaway/src/main/resources/application.yml b/cloud/getaway/src/main/resources/application.yml index c46eb76..7320d89 100644 --- a/cloud/getaway/src/main/resources/application.yml +++ b/cloud/getaway/src/main/resources/application.yml @@ -28,28 +28,29 @@ spring: filters: - StripPrefix=1 - id: SmartCampusWebApi - uri: http://120.26.116.253:9022 -# uri: lb://SmartCampusWebApi +# uri: http://120.26.116.253:9022 + uri: lb://SmartCampusWebApi predicates: - Path=/SmartCampusWebApi/** filters: - StripPrefix=1 - id: file-center -# uri: lb://file-center - uri: http://121.40.30.78:5000 + uri: lb://file-center +# uri: http://121.40.30.78:5000 predicates: - Path=/file-center/** filters: - StripPrefix=1 - id: authserver - uri: http://121.40.30.78:9005 -# uri: lb://authserver +# uri: http://121.40.30.78:9005 + uri: lb://authserver predicates: - Path=/authserver/** filters: - StripPrefix=1 - id: NewSmartCampus - uri: http://114.55.30.100:1111 +# uri: http://114.55.30.100:1111 + uri: lb://NewSmartCampus predicates: - Path=/NewSmartCampus/** filters: -- libgit2 0.21.0