基於SpringBoot的文件上傳

在實際的企業開發中,文件上傳是最常見的功能之一,SpringBoot集成了SpringMVC常用的功能,當然也包含了文

件上傳的功能,實現起來沒有太多的區別。

下面我們來講解一下,使用SpringBoot如何實現多個文件上傳操作。使用的環境是IntelliJ IDE開發工具。

開發過程如下:

1.1 配置pom.xml文件

<project>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelversion>4.0.0/<modelversion>

<parent>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-starter-parent/<artifactid>

<version>2.0.3.RELEASE/<version>

<relativepath>

<groupid>com.qianfeng.springboot/<groupid>

<artifactid>fileupload/<artifactid>

<version>0.0.1-SNAPSHOT/<version>

<name>fileupload/<name>

<description>Demo project for Spring Boot/<description>

<properties>

<java.version>1.8/<java.version>

<dependencies>

<dependency>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-starter-web/<artifactid>

<dependency>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-starter-thymeleaf/<artifactid>

<dependency>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-starter-test/<artifactid>

<scope>test/<scope>

1.2 application.properties

1.3 Controller類

<build>

<plugins>

<plugin>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-maven-plugin/<artifactid>

/<project>

server.port=8080

package com.qianfeng.springboot.fileupload.controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.io.IOException;

@Controller

public class UploadFileController {

@RequestMapping("/uploadfile")

public String uploadOneFile(){

return "uploadonefile"; // 最終由ThymeleafView處理,轉發 classpath:templates

}

@RequestMapping("/uploadfiles")

public String uploadMultiFile(){

return "uploadmultifile"; // 最終由ThymeleafView處理,轉發 classpath:templates

}

/**

* 上傳單個文件

* @param file

* @param request

* @return

*/

@RequestMapping(value = "/uploadsimplefile", method = RequestMethod.POST)

@ResponseBody

public String uploadSimpleFile(@RequestParam("attachment") MultipartFile file,

HttpServletRequest request) {

try {

String fileDir =

request.getSession().getServletContext().getRealPath("/upload/");

System.out.println("------->>"+fileDir);

File dir = new File(fileDir);

if (!dir.exists()) {

dir.mkdirs();

}

String fileName = file.getOriginalFilename();

File upload_file = new File(fileDir + fileName);

file.transferTo(upload_file);

} catch (Exception e) {

e.printStackTrace();

return "上傳失敗";

}

return "上傳成功";

}

/**

* 上傳多個文件

* @param file

* @param request

* @return

*/

@RequestMapping(value = "/uploadmultifile", method = RequestMethod.POST)

@ResponseBody

public String uploadMultiFile(@RequestParam("attachment") MultipartFile[] file,

HttpServletRequest request) {

try {

String fileDir =

request.getSession().getServletContext().getRealPath("/upload/");

System.out.println("------->>"+fileDir);

File dir = new File(fileDir);

if (!dir.exists()) {

dir.mkdirs();

}

for (int i=0;i<file.length>

if (file[i]!=null){

uploadFile(fileDir,file[i]);

}

}

} catch (Exception e) {

e.printStackTrace();

return "上傳失敗";

}

return "上傳成功";

}

1.4 單個文件上傳的頁面

/**

*

* @param uploadDir

* @param file

* @throws IOException

*/

public void uploadFile(String uploadDir,MultipartFile file) throws IOException{

String file_name = file.getOriginalFilename();

File upload_file = new File(uploadDir+file_name);

file.transferTo(upload_file);

}

}

/<file.length>

<title>文件上傳/<title>

<link>

單個文件上傳

1.5 上傳多個文件頁面

<title>文件上傳/<title>

<link>

單個文件上傳


分享到:


相關文章: