最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot上傳zip包并解壓至服務(wù)器nginx目錄方式

 更新時(shí)間:2025年04月21日 14:38:09   作者:Sir_小三  
這篇文章主要介紹了springboot上傳zip包并解壓至服務(wù)器nginx目錄方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot上傳zip包并解壓至服務(wù)器nginx目錄

此案例場(chǎng)景為:

從前端上傳.zip 包,并進(jìn)行解壓至 docker容器內(nèi)(服務(wù)部署使用了docker),然后容器內(nèi)部解壓目錄與 宿主機(jī)(linux)nginx 目錄的html 進(jìn)行掛載,這樣,就可以通過nginx 來訪問上傳解壓出來的文件了。

那么具體看怎么實(shí)現(xiàn),下面會(huì)貼上相關(guān)代碼:

1.首先需要引入zip相關(guān)jar包

 <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>1.3.1</version>
        </dependency>

2.然后我直接貼controller 代碼了

package com.fnm.feynman.smartvillage.admin.controller;

import com.diboot.core.vo.JsonResult;
import com.fnm.feynman.smartvillage.business.entity.RegionVillage;
import com.fnm.feynman.smartvillage.business.service.RegionVillageService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;


/**
 * @author yanjun.liu
 * @date 2020/12/24--16:41
 */
@Slf4j
@RestController
@RequestMapping("/admin/open")
public class UploadVrController {

    @Autowired
    private RegionVillageService regionVillageService;

    /**
     *  https://www.cnblogs.com/0616--ataozhijia/p/5022028.html
     * @param id  村莊id
     * @param file  上傳的vr
     * @throws IOException
     * 上傳到docker容器內(nèi) /opt下,并解壓,然后宿主機(jī)和容器內(nèi)路徑進(jìn)行掛載,外部掛載地址為nginx服務(wù)器html 目錄
     */
    @ApiOperation("上傳vr")
    @PostMapping("/uploadVr/{id}")
    public JsonResult uploadVr(@PathVariable("id") Long id, MultipartFile file) throws IOException, ZipException {
        RegionVillage entity = regionVillageService.getEntity(id);

        File file1 = new File("/opt/" + entity.getValue()+".zip");
        //上傳文件到服務(wù)器/opt/目錄下
        //File file1 = new File("E:/zip/" + entity.getValue()+".zip");
        FileUtils.writeByteArrayToFile(file1,file.getBytes());

        ZipFile zipFile = new ZipFile(file1);
        //給的vr是gbk,如果這里,你上傳的zip包為utf-8,那么這里改為utf-8
        zipFile.setFileNameCharset("gbk");

        String path="/opt/"+entity.getValue();
        //解壓到指定目錄
        zipFile.extractAll(path);


        String substring = file.getOriginalFilename().substring(0, file.getOriginalFilename().indexOf("."));

   //將解壓到nginx 目錄的路徑地址拼接為可訪問的url ,進(jìn)行修改實(shí)體對(duì)象
        entity.setVrUrl("https://**ed.*****.com/vr/"+entity.getValue()+"/"+substring+"/output/index.html");
        regionVillageService.updateEntity(entity);
        return JsonResult.OK();
    }
}

3.說明上面上傳的/opt/目錄為docker容器里面的目錄

那么我需要將容器里面的目錄和宿主機(jī)nginx目錄進(jìn)行掛載后,才能通過http請(qǐng)求訪問

具體如何掛載呢?

關(guān)鍵:

-v /usr/local/nginx/html/vr:/opt

前面為宿主機(jī)nginx的靜態(tài)文件目錄,:后面為容器內(nèi)部目錄,這個(gè)配置智慧解壓縮后的文件就會(huì)同步到 nginx html目錄下,就可以訪問了

docker run -d -p 4011:4011 --net mynet --name feynman-smart-village-admin  -v /usr/local/nginx/html/vr:/opt  feynman-smart-village-admin:latest  

至此 上傳zip 解壓 至服務(wù)器就完成了~

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis自定義參數(shù)類型轉(zhuǎn)換器數(shù)據(jù)庫字段加密脫敏

    mybatis自定義參數(shù)類型轉(zhuǎn)換器數(shù)據(jù)庫字段加密脫敏

    這篇文章主要為大家介紹了mybatis自定義參數(shù)類型轉(zhuǎn)換器數(shù)據(jù)庫字段加密脫敏,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例

    Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)提取不重復(fù)的整數(shù)實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 詳解Java中的OkHttp?JSONP爬蟲

    詳解Java中的OkHttp?JSONP爬蟲

    一般在java平臺(tái)上,我們會(huì)使用apache?httpclient作為http客戶端,用于發(fā)送?http?請(qǐng)求,并對(duì)響應(yīng)進(jìn)行處理,這篇文章主要介紹了詳解Java中的OkHttp?JSONP爬蟲的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Java超詳細(xì)介紹抽象類與接口的使用

    Java超詳細(xì)介紹抽象類與接口的使用

    在類中沒有包含足夠的信息來描繪一個(gè)具體的對(duì)象,這樣的類稱為抽象類,接口是Java中最重要的概念之一,它可以被理解為一種特殊的類,不同的是接口的成員沒有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類和接口,感興趣的朋友一起看看吧
    2022-05-05
  • Java開發(fā)者必備10大數(shù)據(jù)工具和框架

    Java開發(fā)者必備10大數(shù)據(jù)工具和框架

    這篇文章主要為大家詳細(xì)介紹了Java開發(fā)者必備10大數(shù)據(jù)工具和框架,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot中的Actuator詳解

    SpringBoot中的Actuator詳解

    這篇文章主要介紹了SpringBoot中的Actuator詳解,Spring Boot Actuator 在Spring Boot第一個(gè)版本發(fā)布的時(shí)候就有了,它為Spring Boot提供了一系列產(chǎn)品級(jí)的特性,監(jiān)控應(yīng)用程序,收集元數(shù)據(jù),運(yùn)行情況或者數(shù)據(jù)庫狀態(tài)等,需要的朋友可以參考下
    2023-09-09
  • Spring Security中防護(hù)CSRF功能詳解

    Spring Security中防護(hù)CSRF功能詳解

    這篇文章主要介紹了Spring Security中防護(hù)CSRF功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java 使用foreach遍歷集合元素的實(shí)例

    java 使用foreach遍歷集合元素的實(shí)例

    這篇文章主要介紹了java 使用foreach遍歷集合元素的實(shí)例的相關(guān)資料,這里提供實(shí)例幫助大家理解如何使用foreach 進(jìn)行遍歷,希望能幫助到大家,
    2017-08-08
  • Java 基礎(chǔ)語法之解析 Java 的包和繼承

    Java 基礎(chǔ)語法之解析 Java 的包和繼承

    包是組織類的一種方式,繼承顧名思義,比如誰繼承了長(zhǎng)輩的產(chǎn)業(yè),其實(shí)這里的繼承和我們生活中的繼承很類似,下面文字將為大家詳細(xì)介紹Java的包和繼承
    2021-09-09
  • 解決tk mapper 通用mapper的bug問題

    解決tk mapper 通用mapper的bug問題

    這篇文章主要介紹了解決tk mapper 通用mapper的bug問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

朝阳区| 台州市| 兰坪| 蒲城县| 蚌埠市| 龙州县| 秦安县| 康马县| 维西| 巫山县| 红桥区| 台山市| 镶黄旗| 临清市| 玉龙| 达日县| 麦盖提县| 乌鲁木齐县| 金寨县| 沾益县| 绿春县| 富锦市| 大荔县| 西和县| 盐源县| 兴山县| 新兴县| 云林县| 镇康县| 宁国市| 龙陵县| 天台县| 朝阳县| 徐闻县| 德格县| 阿城市| 北碚区| 镇安县| 宁晋县| 漯河市| 许昌县|