자바 성능 도구 JMeter 업로드 및 다운로드 스 크 립 트 작성

머리말
성능 테스트 작업 중 파일 업로드 도 자주 볼 수 있 는 성능 테스트 장면 중 하나 입 니 다.그러면 JMeter 파일 업로드 다운로드 스 크 립 트 는 어떻게 합 니까?
지식 포인트:
자바 파일 업로드 및 다운로드 기능 구현
  • JMeter 파일 업로드 및 다운로드 스 크 립 트 작성
  • 예비 지식
    파일 작업 에 관 한 자바 API 를 먼저 배 워 보 세 요:
    1.구조 방법
  • File(File parent,String child):parent 추상 적 인 경로 이름과 child 경로 이름 문자열 에 따라 새 File 인 스 턴 스 를 만 듭 니 다
  • File(String pathname):주어진 경로 이름 문자열 을 추상 적 인 경로 이름 으로 변환 하여 새 File 인 스 턴 스 를 만 듭 니 다
  • File(String parent,String child):parent 경로 이름 문자열 과 child 경로 이름 문자열 에 따라 새 File 인 스 턴 스 를 만 듭 니 다
  • File(URI uri):주어진 file URI 를 추상 적 인 경로 이름 으로 변환 하여 새로운 File 인 스 턴 스 를 만 듭 니 다
  • Public boolean createNewFile():파일 을 만 들 고 이런 파일 이 존재 하면 만 들 지 않 습 니 다
  • 2.생 성 기능
  • Public boolean mkdir():폴 더 를 만 듭 니 다.이러한 폴 더 가 존재 하면 만 들 지 않 습 니 다
  • Public boolean mkdirs():폴 더 를 만 듭 니 다.부모 폴 더 가 존재 하지 않 으 면 만 들 수 있 습 니 다
  • 3.이름 바 꾸 기 및 삭제 기능
  • public boolean renameTo(File dest):파일 이름 을 지정 한 파일 경로 로 바 꿉 니 다
  • Public boolean isDirectory():디 렉 터 리 여 부 를 판단 합 니 다
  • Public boolean isFile():파일 여 부 를 판단 합 니 다
  • public boolean exists():존재 여 부 를 판단 합 니 다
  • public boolean canRead():읽 을 수 있 는 지 여 부 를 판단 합 니 다
  • public boolean canWrite():쓸 수 있 는 지 여 부 를 판단 합 니 다
  • public boolean isHidden():숨 김 여 부 를 판단 합 니 다.
  • 4.획득 기능
  • public String getAbsolutePath():절대 경로 획득
  • public String getPath():획득 경로
  • public String getName():이름 가 져 오기
  • Public long length():길 이 를 가 져 옵 니 다.바이트 수
  • Public long lastModified():마지막 수정 시간 을 가 져 옵 니 다.밀리초 값
  • Public String[]list():지정 한 디 렉 터 리 에 있 는 모든 파일 이나 폴 더 의 이름 배열 을 가 져 옵 니 다
  • public File[]listFiles():지정 한 디 렉 터 리 에 있 는 모든 파일 이나 폴 더 의 File 배열 가 져 오기
  • 3.자바 파일 업로드 및 다운로드 기능 구현
    1.서비스 다운로드 코드
    
    /**
     * @author 7d
     * @Title: FileController
     * @Description:      
     * @date 2019/12/13 / 21:00
     */
    @Controller
    @RequestMapping("/file/")
    public class FileController {
    
    
        /**
         *     
         *
         * @param fileupload   
         * @return msg
         */
        @PostMapping("fileupload")
        @ResponseBody
        public Msg upload(@RequestParam("fileupload") MultipartFile fileupload) {
    
            if (fileupload.isEmpty() || fileupload.getSize() < 0) {
                return Msg.fail().add("mgs", "    ,    !");
            }
            //       
            String fileName = fileupload.getOriginalFilename();
            //      
            // String suffixName = fileName.substring(fileName.lastIndexOf("."));
            //       
            String filePath = "E:\\test\\7d\\upload\\";
            //      ,    
            fileName = filePath + UUID.randomUUID() + fileName;
            //     
            File dest = new File(fileName);
            //         ,        
            if (!dest.getParentFile().exists()) {
                dest.getParentFile().mkdirs();
            }
            try {
                //        
                fileupload.transferTo(dest);
                return Msg.success().add("mgs", "      ");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return Msg.fail().add("mgs", "      ");
        }
    
    
        /**
         *     
         *
         * @param name           
         * @param response    
         * @return mgs
         * @throws Exception     
         */
        @GetMapping("download")
        public void download(@RequestParam("filedown") String name, HttpServletResponse response) throws Exception {
            if (name.isEmpty()) {
                return;
            }
            //     ,             
            File file = new File("E:\\test\\7d\\upload\\" + name);
            //        
            if (!file.exists()) {
                return;
            }
            //        
            FileInputStream fis = new FileInputStream(file);
            //       
            response.setContentType("application/force-download");
            //            header
            response.addHeader("Content-disposition", "attachment;fileName=" + name);
            //       
            OutputStream os = response.getOutputStream();
            //     
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = fis.read(buf)) != -1) {
                os.write(buf, 0, len);
            }
            fis.close();
            return;
        }
    
    }
    
    2.전단 코드
    
    <!DOCTYPE html>
    <html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!--   3 meta  *  *     ,       *  *    ! -->
        <title>      </title>
        <meta name="description" content="      ">
        <meta name="author" content="liwen">
        <!-- Bootstrap -->
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
    
        <!-- HTML5 shim   Respond.js      IE8    HTML5        (media queries)   -->
        <!--   :   file://   (      html          )      Respond.js      -->
        <!--[if lt IE 9]>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/html5shiv.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dest/respond.min.js"></script>
        <![endif]-->
    </head>
    <body>
    <div class="container">
        <h1>  ,  ,   !</h1>
        <br>
        <div>
            <h2>    </h2>
            <form id="fileupload" enctype='multipart/form-data'>
                <input type='file' name='fileupload'>
                <button type='button' class="btn  btn-primary" onclick="uploadFile()">  </button>
            </form>
        </div>
    
        <div>
            <h2>    </h2>
            <form th:action="@{/file/download}" action="/file/download" method="get">
                <input type='text' name='filedown'>
                <button type='submit' class="btn  btn-primary">  </button>
            </form>
        </div>
    
        <!-- jQuery (Bootstrap     JavaScript       jQuery,        ) -->
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
        <!--    Bootstrap     JavaScript   。               。 -->
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
    </div>
    </body>
    <script>
    
        //    
        function uploadFile() {
            //FormData html5   ,              form    :
            var form = new FormData(document.getElementById("fileupload"));
            $.ajax({
                url: "/file/fileupload",
                type: "post",
                data: form,
                cache: false,
                processData: false,
                contentType: false,
                success: function (data) {
                    if (data.code == 100) {
                        alert(data.extend.mgs);
                    } else {
                        alert(data.extend.mgs);
                    }
                },
                error: function (e) {
                    alert("    ,   !!");
                }
            });
        }
    
    </script>
    </html>
    
    3.실행 효과
    在这里插入图片描述
    4.JMeter 파일 업로드 및 다운로드 스 크 립 트 작성
    Jmeter 를 열 고 스 레 드 그룹,http 요청 을 만 듭 니 다.
    1.파일 업로드 스 크 립 트
    在这里插入图片描述
    在这里插入图片描述
    주의:
    在这里插入图片描述
    인증 결과:
    在这里插入图片描述
    在这里插入图片描述
    2.파일 다운로드 스 크 립 트
    在这里插入图片描述
    在这里插入图片描述
    참조 코드:
    
    import java.io.*;
    byte[] result = prev.getResponseData();
    String file_name = "E:\\test\\7d\\data\\2222.ico";
    File file = new File(file_name);
    FileOutputStream out = new FileOutputStream(file);
    out.write(result);
    out.close();
    
    총화
    이상 은 간단하게 소개 할 뿐 지식 포 인 트 는 자바 파일 작업,디 렉 터 리 작업,http 요청 등 과 관련 된 정보 가 많 습 니 다.
    문장 원본:
    https://github.com/zuozewei/blog-example/tree/master/Performance-testing/01-test-tool/jmeter/file/sdechartsjs
    자바 성능 도구 인 JMeter 가 스 크 립 트 를 업로드 하고 다운로드 하기 위해 작성 한 글 을 소개 합 니 다.더 많은 관련 JMeter 업로드 와 다운로드 스 크 립 트 작성 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기