国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過url訪問

這篇具有很好參考價(jià)值的文章主要介紹了Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過url訪問。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、場景

Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過url訪問

有個(gè)需求,前端上傳文件,需要用開關(guān)的方式同時(shí)支持上傳七牛和服務(wù)器本地,方便不同的用戶需求合理分配資源。本篇主要介紹文件上傳到本地,然后通過url訪問。


二、SpringBoot默認(rèn)靜態(tài)資源訪問方式

首先想到的就是可以通過SpringBoot通常訪問靜態(tài)資源的方式,當(dāng)訪問:項(xiàng)目根路徑 + / + 靜態(tài)文件名時(shí),SpringBoot會依次去類路徑下的四個(gè)靜態(tài)資源目錄下查找(默認(rèn)配置)。

java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot
在資源文件resources目錄下建立如下四個(gè)目錄:

java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot
重啟Spring boot,訪問
http://localhost:8080/1.jpg
http://localhost:8080/2.jpg
http://localhost:8080/3.jpg
http://localhost:8080/4.jpg

結(jié)果:
java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot

三、上傳的文件應(yīng)該存儲在哪?怎么訪問?

1.文件存儲在哪?

前文所說外部用戶可通過url訪問服務(wù)器資源文件resources目錄下的靜態(tài)資源,但若是將上傳的文件都保存在resources相關(guān)目錄下,將會導(dǎo)致后續(xù)打包過大,程序和代碼不分離,無法查看等問題。

解決方案:文件上傳到服務(wù)器某個(gè)目錄,然后SpringBoot配置虛擬路徑,映射到此目錄。

2.怎么訪問?

通過WebMvcConfigurer 的addResourceHandlers將匹配上虛擬路徑的url映射到文件上傳到服務(wù)器的目錄,這樣就可以通過url來獲取服務(wù)器上的靜態(tài)資源了。

示例代碼

代碼倉庫github路徑

目標(biāo):windows本地測試,將文件上傳到 D:\develop\work\project\myblog\myblog-file-upload\fileStorage 目錄下,然后通過http://localhost:8080/files/文件名 訪問。

配置類

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Autowired
    FileServiceImpl fileService;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //將匹配上/files/**虛擬路徑的url映射到文件上傳到服務(wù)器的目錄,獲取靜態(tài)資源
        registry.addResourceHandler("/" + fileService.pathPattern + "/**").addResourceLocations("file:" + fileService.filePath);
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }
}

Controller

@RestController
@RequestMapping("/file")
public class FileController {

    @Autowired
    private FileServiceImpl fileService;

    @PostMapping("/upload")
    public FileUploadResponse upload(@RequestParam("file") MultipartFile file) {
        return fileService.upload(file);
    }
}

上傳文件目錄創(chuàng)建好后,主要通過 file.transferTo(new File(absolutePath)) 完成。

Service

@Slf4j
@Service
public class FileServiceImpl {

    //攔截的url,虛擬路徑
    public String pathPattern = "files";

    //自己設(shè)置的目錄
    private static final String fileDir = "fileStorage";

    //上傳文件存放目錄  =  工作目錄絕對路徑 + 自己設(shè)置的目錄,也可以直接自己指定服務(wù)器目錄
    //windows本地測試
    //絕對路徑: D:\develop\work\project\myblog\myblog-file-upload\fileStorage\202302021010345680.jpg
    //System.getProperty("user.dir")   D:\develop\work\project\myblog\myblog-file-upload
    //fileDir                          fileStorage
    //fileName                         202302021010345680.jpg
    public String filePath = System.getProperty("user.dir") + File.separator + fileDir + File.separator;

    private static final AtomicInteger SUFFIX = new AtomicInteger(0);

    @Value(value = "${file.upload.suffix:jpg,jpeg,png,bmp,xls,xlsx,pdf}")
    private String fileUploadSuffix;

    public FileUploadResponse upload(MultipartFile file) {
        FileUploadResponse result = new FileUploadResponse();
        if (file.isEmpty()) {
            log.error("the file to be uploaded is empty");
            return result;
        }
        List<String> suffixList = Lists.newArrayList(fileUploadSuffix.split(","));

        try {
            //校驗(yàn)文件后綴
            String originalFilename = file.getOriginalFilename();
            String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            if (!suffixList.contains(suffix)) {
                log.error("unsupported file format");
                return result;
            }

            //首次需生成目錄
            File folder = new File(filePath);
            if (!folder.exists()) {
                folder.mkdirs();
            }

            String fileName = timeFormat(System.currentTimeMillis()) + SUFFIX.getAndIncrement() + "." + suffix;
            String absolutePath = filePath + fileName;
            log.info("absolutePath is {}", absolutePath);
            file.transferTo(new File(absolutePath));

            String separator = "/";
            String path = separator + pathPattern + separator + fileName;
            result.setPath(path);
            result.setFileName(fileName);
        } catch (Exception e) {
            log.error("the file upload error occurred. e ", e);
        }
        return result;
    }

    public static String timeFormat(Long time) {
        if (Objects.isNull(time)) {
            return null;
        }
        DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return sdf.format(time);
    }

}

四、測試

java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot
查看文件夾,已上傳成功

java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot

將上傳接口返回的path拼接上域名或者ip端口、訪問 http://localhost:8080/files/202302021010345680.jpg,得到:

java文件上傳 后怎么訪問,SpringBoot,業(yè)務(wù),java,服務(wù)器,spring boot


五、總結(jié)

其實(shí)這和最初的SpringBoot獲取靜態(tài)資源的方式又有點(diǎn)不一樣,針對url做攔截,實(shí)際上resources目錄下并沒有files這個(gè)文件夾,它只是一個(gè)虛擬路徑,通過映射轉(zhuǎn)發(fā)到文件夾上傳目錄,在該目錄下通過文件名去定位。
另外,如果有用nginx,也可以在其配置中設(shè)置轉(zhuǎn)發(fā)。文章來源地址http://www.zghlxwxcb.cn/news/detail-780264.html

到了這里,關(guān)于Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過url訪問的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JAVA實(shí)現(xiàn)文件上傳到服務(wù)器

    JAVA實(shí)現(xiàn)文件上傳到服務(wù)器

    java如何實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳、秒傳,JAVA實(shí)現(xiàn)文件上傳到服務(wù)器,jsp實(shí)現(xiàn)文件上傳到服務(wù)器,SpringBoot實(shí)現(xiàn)文件上傳到服務(wù)器,SpringMVC實(shí)現(xiàn)文件上傳到服務(wù)器,SpringCloud實(shí)現(xiàn)文件上傳到服務(wù)器,webuploader實(shí)現(xiàn)文件上傳到服務(wù)器,百度webuploader實(shí)現(xiàn)文件上傳到服務(wù)器,JAVA如何將文件

    2024年04月27日
    瀏覽(26)
  • Shell腳本常用命令及如何通過shell腳本實(shí)現(xiàn)服務(wù)器上文件的上傳和下載

    Shell腳本常用命令 簡介 1、什么是shell: Shell 是一個(gè)用 C 語言編寫的應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序,擴(kuò)展名為.sh。 2、如何編寫shell腳本: 文本編輯器(可以使用

    2024年02月03日
    瀏覽(31)
  • Java實(shí)現(xiàn)文件上傳到ftp服務(wù)器

    Java實(shí)現(xiàn)文件上傳到ftp服務(wù)器

    文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應(yīng)用層, 使用 TCP 傳輸而不是 UDP, 客戶在和服務(wù)器建立連接前要經(jīng)過一個(gè)“三次握手”的過程, 保證客戶與服務(wù)器之間的連接是可靠的

    2024年02月14日
    瀏覽(24)
  • 上傳本地文件到HDFS服務(wù)器

    在這篇文章中,我將詳細(xì)介紹如何將本地文件上傳到HDFS(分布式文件系統(tǒng))服務(wù)器。我們將使用Hadoop命令行工具來完成這個(gè)任務(wù)。 首先,確保你已經(jīng)安裝了Hadoop并且HDFS服務(wù)器正在運(yùn)行。接下來,我們將按照以下步驟進(jìn)行操作: 步驟 1: 檢查HDFS文件系統(tǒng) 在上傳文件之前,我們

    2024年02月04日
    瀏覽(27)
  • Java實(shí)現(xiàn)以form-data形式文件上傳到服務(wù)器

    Java實(shí)現(xiàn)以form-data形式文件上傳到服務(wù)器

    2024年02月13日
    瀏覽(21)
  • 本地上傳文件至阿里云服務(wù)器的方法

    本地上傳文件至阿里云服務(wù)器的方法

    1.通過阿里云自帶的助手傳輸小文件至阿里云ECS服務(wù)器,編碼后文件大小不能大于32KB ? 2.在云服務(wù)器中安裝wps,可以查看上傳的文件 3.遠(yuǎn)程登錄阿里云服務(wù)器,在云服務(wù)器下載寶塔Windows安裝,在云服務(wù)器輸入寶塔網(wǎng)址:https://www.bt.cn/#

    2024年02月11日
    瀏覽(30)
  • windows本地上傳文件到服務(wù)器(scp)

    windows本地上傳文件到服務(wù)器(scp)

    1.ssh 用戶名@ip:遠(yuǎn)程登錄服務(wù)器。 2.scp 本地文件路徑 用戶名@ip:上傳路徑 :本地文件與服務(wù)器進(jìn)行傳遞。 3.本地文件夾上傳到服務(wù)器 4.查看當(dāng)前文件夾下所有文件的權(quán)限 5.修改文件夾權(quán)限(777是最高權(quán)限) 注意:scp命令只適用于本機(jī)終端(比如cmd / powershell),或者是各種編

    2024年02月12日
    瀏覽(29)
  • mac PyCharm 上傳文件到遠(yuǎn)程服務(wù)器+遠(yuǎn)程服務(wù)器下載到本地

    mac PyCharm 上傳文件到遠(yuǎn)程服務(wù)器+遠(yuǎn)程服務(wù)器下載到本地

    選擇SFTP name:test6 輸入ssh賬號和密碼。保存密碼和30s心跳。 Local path(本地mac機(jī)器):/Users/clevercode/PycharmProjects/test6 Root path(遠(yuǎn)程服務(wù)機(jī)器):/home/clevercode/test6 Root path(遠(yuǎn)程服務(wù)機(jī)器):/home/clevercode/test6 [2024/1/18, 10:56 AM] Upload file ‘/Users/clevercode/PycharmProjects/test6/f100.py’ t

    2024年01月19日
    瀏覽(31)
  • vscode遠(yuǎn)程連接服務(wù)器(remote ssh)+上傳本地文件到服務(wù)器(sftp)

    vscode遠(yuǎn)程連接服務(wù)器(remote ssh)+上傳本地文件到服務(wù)器(sftp)

    一、vscode遠(yuǎn)程連接服務(wù)器 1.點(diǎn)擊vscode右邊工具欄點(diǎn)擊拓展,搜索remote ssh并安裝 2.安裝完成后,左邊工具欄會出現(xiàn)一個(gè)電腦圖標(biāo)的遠(yuǎn)程資源管理器,點(diǎn)擊后選擇SSH TARGETS的設(shè)置 3.然后選擇第一個(gè)..sshconfig 4.向服務(wù)器管理員索要服務(wù)器的連接信息并修改ssh config文件 ? 5.設(shè)置完成

    2024年02月01日
    瀏覽(27)
  • 利用vscode工具從本地上傳文件到服務(wù)器中

    利用vscode工具從本地上傳文件到服務(wù)器中

    首先,在vscode中安裝SFTP擴(kuò)展; 然后去配置sftp的傳輸信息,在vscode中按快捷鍵Ctrl+Shift+P或者點(diǎn)擊下面圖片的位置: 輸入SFTP:Config(如下圖),點(diǎn)擊后會在此項(xiàng)目目錄下生成一個(gè)sftp.json文件。 然后配置sftp.json文件中的信息就可以了: host:遠(yuǎn)程服務(wù)器的ip; port:遠(yuǎn)程服務(wù)器的端

    2024年04月13日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包