一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java性能工具JMeter實現上傳與下載腳本編寫

Java性能工具JMeter實現上傳與下載腳本編寫

2021-10-19 10:39zuozewei Java教程

性能測試工作中,文件上傳也是經常見的性能壓測場景之一,那么 JMeter 文件上傳下載腳本怎么做,本文詳細的來介紹一下,感興趣的可以了解一下

一、前言

性能測試工作中,文件上傳也是經常見的性能壓測場景之一,那么 JMeter 文件上傳下載腳本怎么做?

知識點:

  • Java 實現文件上傳下載功能
  • JMeter 文件上傳與下載腳本編寫

 

二、預備知識

先學習下 Java API 關于文件操作的 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數組

 

三、Java 實現文件上傳下載功能

 

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:	est7dupload";
        // 文件重命名,防止重復
        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:	est7dupload" + 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、運行效果

Java性能工具JMeter實現上傳與下載腳本編寫

 

四、JMeter 文件上傳與下載腳本編寫

打開 Jmeter 并且創建線程組、http 請求。

 

1、文件上傳腳本

Java性能工具JMeter實現上傳與下載腳本編寫

Java性能工具JMeter實現上傳與下載腳本編寫

注意:

Java性能工具JMeter實現上傳與下載腳本編寫

驗證結果:

Java性能工具JMeter實現上傳與下載腳本編寫

Java性能工具JMeter實現上傳與下載腳本編寫

 

2、文件下載腳本

Java性能工具JMeter實現上傳與下載腳本編寫

Java性能工具JMeter實現上傳與下載腳本編寫

參考代碼:

import java.io.*;
byte[] result = prev.getResponseData();
String file_name = "E:	est7ddata2222.ico";
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();

 

五、總結

以上只是簡單介紹,知識點很多涉及 Java 文件操作,目錄操作,http 請求等信息。

文章源碼:

https://github.com/zuozewei/blog-example/tree/master/Performance-testing/01-test-tool/jmeter/file/sdechartsjs

到此這篇關于Java性能工具JMeter實現上傳與下載腳本編寫的文章就介紹到這了,更多相關JMeter上傳與下載腳本編寫內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/zuozewei/article/details/118914724

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
主站蜘蛛池模板: 色哟哟在线视频 | 亚洲欧洲网站 | 韩国禁片在线观看久 | 国产区最新 | 久久毛片免费看一区二区三区 | 亚洲国产高清一区二区三区 | 亚洲酒色1314狠狠做 | 金牛网155755水心论坛黄大父母 | 亚洲成在人线久久综合 | juliaann丝袜精品系列 | 国产卡一卡二卡四卡无卡 | 秋葵丝瓜茄子草莓榴莲樱桃 | 青柠网在线观看视频 | 亚洲狠狠综合久久 | 极品美女a∨片在线看 | 欧美不卡一区二区三区免 | 91好色 | 91专区| 久久学生精品国产自在拍 | 精品无码人妻一区二区免费AV | 四虎影院久久久 | 香蕉久久一区二区不卡无毒影院 | 亚洲黄色图 | 美国雪白人妖sarina | 欧美成人影院免费观 | 把内裤拔到一边高h1v1 | 成人123 | 女人全身裸露无遮挡免费观看 | 女教师巨大乳孔中文字幕免费 | 九九大香尹人视频免费 | 日本一卡=卡三卡免费 | 91桃花视频 | 亚洲黄色高清 | 久久观看视频 | 欧美兽皇video | 调教麻麻成贱m | 免费高清视频在线观看 | 狠狠色伊人亚洲综合网站色 | 给我一个黄色网址 | 青青草成人影院 | 成人黄色免费网站 |