whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/controller/Word2PdfController.java
@@ -3,7 +3,6 @@
import com.whyc.constant.YamlProperties;
import com.whyc.dto.Response;
import com.whyc.util.ActionUtil;
import com.whyc.util.UrlDownload;
import com.whyc.util.Word2PdfJacobUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -13,6 +12,7 @@
import java.io.File;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.regex.Pattern;
@RestController
@RequestMapping("word2Pdf")
@@ -22,13 +22,15 @@
    @GetMapping("transfer")
    @ApiOperation(value = "转化")
    public Response transfer(@RequestParam String url,@RequestParam String fileName) throws IOException {
        //过滤格式必须为 http://[ip]/zenta
        //url = URLDecoder.decode(url,"utf-8");
        boolean matches = Pattern.matches("^http://(\\d{1,3}\\.){3}\\d{1,3}/zenta.*",url);
        if(!matches){
            return new Response().setII(0,"接口调用异常,参数错误");
        }
        //过滤特殊字符,避免路径遍历攻击
        //fileName = URLDecoder.decode(fileName,"utf-8");
        fileName = ActionUtil.filterFileName(fileName);
        /*String[] urlSplit = url.split("=");
        String fileUrl = urlSplit[1].replace("&fileName","");
        String fileName = urlSplit[2].split("\\.")[0];*/
        url = URLDecoder.decode(url,"utf-8");
        fileName = URLDecoder.decode(fileName,"utf-8");
        String fileUrl = url;
        String filePath;
        //存储路径
@@ -59,7 +61,8 @@
            Word2PdfJacobUtil.word2PDF(fileUrl,filePath+File.separator+fileName+".pdf");
            return new Response().set(1,fileName,"转化成功");
        }
        else if(fileName.contains("xls")){
        //qi an xin 输入验证>服务器请求伪造
        /*else if(fileName.contains("xls")){
            suffix = ".xls";
            fileName = fileName.split("\\.xls")[0];
        }
@@ -67,17 +70,8 @@
            suffix = ".pdf";
            fileName = fileName.split("\\.pdf")[0];
        }
        UrlDownload.downLoadFromUrl(fileUrl,fileName+suffix,filePath);
        UrlDownload.downLoadFromUrl(fileUrl,fileName+suffix,filePath);*/
        return new Response().set(1,fileName+suffix,"保存成功");
    }
    public static void main(String[] args) throws IOException {
        String url = "http:%2F%2F118.89.139.230%2Fzentao%2Fdata%2Fupload%2F1%2F202205%2F231425160378826a";
        //String url = "http:%2F%2F118.89.139.230%2Fzentao%2Fdata%2Fupload%2F1%2F202205%2F231425160378826a&fileName=%E6%95%B4%E6%94%B9%E7%BB%86%E8%8A%82v1.xls.xls";
        String fileName = "test.xls";
        String filePath = "F:\\pdf";
        url = URLDecoder.decode(url,"utf-8");
        UrlDownload.downLoadFromUrl(url,fileName,filePath);
    }
}