Teknologian jakaminen

js spring boot toteuttaa yksinkertaisia ​​etu- ja taustatiedostojen lataustoimintoja

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

js+boot-projekti toteuttaa mukautetun latauksen

1. Etusivu

1. Tuo ensin aksioiden js-paketti

2. Kiinnitä huomiota axios-vastauksen muotoon:result.data.todellista datasisältöä

3. Tässä pyydetty URL-osoite on käynnistysprojektisi getMapping-URL, pidä se vain yhtenäisenä.

4. Jos haluat asettaa sen taustajärjestelmäänTiedoston nimi, sitten kun taustaosa on luotu, se vastaa fileName-kentällä ja käyttöliittymä jäsentää arvon.

Tässä on sivulle liitetty jstunniste, kutsu klikkausmenetelmää koodin käynnistävän hypyn toteuttamiseksi.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/axios.min.js"></script>
</head>
<body>
<h2>模拟下载</h2>
<button onclick="downloading()">Click me</button>
</body>
<script>
    async function downloading() {
        const result = await axios.get('http://localhost:8080/download');
        console.log(result.data)
        if (result.data.code === 200) {
            const blob = new Blob([result.data.data], {type: 'text/plain;charset=utf-8'});
            const link = document.createElement('a')
            link.style.display = 'none'
            const url = URL.createObjectURL(blob)
            link.href = url
            link.download = '文件名.txt'
            document.body.appendChild(link)
            link.click()
            document.body.removeChild(link)
            URL.revokeObjectURL(url)
        } else {
            alert("下载失败!")
        }
    }

</script>
</html>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

2. Taustakoodi

1. Monet Internetin demot palaavat asetusten kautta.Pyynnön runkoTämä menetelmä on toteutettu Tässä on toinen idea, joka on palauttaa datataulukko, jos se on muissa muodoissa, kuten Excel, voit vastata palauttamalla binääritietotavun [].

2. Jos ei ole olemassa puhdasta ASCII-koodia, kuten kiinaa, voit asettaa base64-vastauksen.

3. Tässä käytetään Gsonia, ja sen muotoilun kautta kartta muunnetaan json-merkkijonoksi ja palautetaan käyttöliittymään.

    @GetMapping("/download")
    @ResponseBody
    public String downloadFile() {

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 500; i++) {
            sb.append("模拟一条数据").append(i).append("n");
        }

        Map<String, Object> resultMap = new HashMap<>(6);
        resultMap.put("code", 200);
        resultMap.put("data", sb.toString());

        return gson.toJson(resultMap);
    }


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2. Projektin käynnistystestaus

Lisää kuvan kuvaus tähän
Pääsy projektin käynnistykseen: http://localhost:8080/toIndex

Lisää kuvan kuvaus tähän
Napsauta painiketta ladataksesi
Lisää kuvan kuvaus tähän
Katso txt-teksti
Lisää kuvan kuvaus tähän

4. Yhteenveto

Yllä oleva on yksinkertainen toteutusesittely tiedostojen lataustoiminnosta.
Vaikka etuosaa ja taustaosaa ei kehitetä tässä erikseen, suunnittelukonsepti välittää datan täysin taustan mukaan eikä käsittele liikaa näkymää, joka on silti erittäin arvokasta viite- ja oppimisen kannalta.

Olen jättänyt huomioimatta monia yksityiskohtia, näytän vain ydinosat.
Esimerkiksi tiedostojen lataus sisältää alihankintalatauksen, suurten tiedostojen segmentoitua lataamista jne.
Esimerkiksi latausmuotojen yleistäminen jne.

Toivon, että se voi auttaa kaikkia ratkaisemaan ongelman. Anna minulle paljon tykkäyksiä auttaaksesi bloggaajaa jatkamaan päivittämistä
Voimakkaat ihmiset ruiskuttivat kevyesti, se oli vain yksinkertainen demo, ja he oppivat toisiltaan.