Всем привет, в этой главе мы добавляем функцию загрузки нескольких файлов. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной по адресу mr_beany@163.com. Также попросите руководства великих богов, спасибо
В системе модуль загрузки файлов, безусловно, незаменим, например, загрузка аватара, отображение изображения карусели и т. д., поэтому в этой главе мы добавим функцию загрузки файлов.
Первый: добавить зависимость commons-fileupload
Откройте файл pom и добавьте
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
Второе: добавить системные переменные
Откройте файл core→constant и добавьте путь сохранения файла.
//文件上传储存的地址
public static final String SAVEFILEPATH = "F://img";
Три: добавить ограничение на загрузку файлов
Создать ядро→конфигуратор→MultipartConfigurer.java
package com.example.demo.core.configurer;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;
@Configuration
public class MultipartConfigurer {
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory=new MultipartConfigFactory();
factory.setMaxFileSize("10MB");
factory.setMaxRequestSize("10MB");
return factory.createMultipartConfig();
}
}
Четвертое: создайте класс инструментов для загрузки файлов
Создать ядро → утилиты → UploadActionUtil.java
package com.example.demo.core.utils;
import com.example.demo.core.constant.ProjectConstant;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author 张瑶
* 文件上传控制器
*/
public class UploadActionUtil {
public static List<String> uploadFile(HttpServletRequest request) throws Exception {
List<String> list = new ArrayList<>();
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iterator = multiRequest.getFileNames();
while (iterator.hasNext()) {
// 取得上传文件
MultipartFile file = multiRequest.getFile(iterator.next());
if (file != null) {
// 取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (myFileName.trim() != "") {
String fileTyps = myFileName.substring(myFileName.lastIndexOf("."));
// String tempName="demo"+fileTyps;
String tempName = UUID.randomUUID().toString() + fileTyps;
// 创建文件夹
String folderPath = ProjectConstant.SAVEFILEPATH + File.separator + folderName();
File fileFolder = new File(folderPath);
if (!fileFolder.exists() && !fileFolder.isDirectory()) {
fileFolder.mkdir();
}
File uploadFile = new File(folderPath + File.separator + tempName);
file.transferTo(uploadFile);
myFileName = folderName() + File.separator + tempName;
list.add(ProjectConstant.SAVEFILEPATH + "//" + myFileName);
}
}
}
}
return list;
}
/**
* 得年月日的文件夹名称
*
* @return
*/
public static String getCurrentFilderName() throws Exception{
Calendar now = Calendar.getInstance();
return now.get(Calendar.YEAR) + "" + (now.get(Calendar.MONTH) + 1) + "" + now.get(Calendar.DAY_OF_MONTH);
}
/**
* 创建文件夹
*
* @param filderName
*/
public static void createFilder(String filderName) throws Exception {
File file = new File(filderName);
// 如果文件夹不存在则创建
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
}
/**
* 文件扩展名
*
* @param fileName
* @return
*/
public static String extFile(String fileName) throws Exception{
return fileName.substring(fileName.lastIndexOf("."));
}
/**
* 当前日期当文件夹名
*
* @return
*/
public static String folderName() throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String str = sdf.format(new Date());
return str;
}
}
Пятое: создайте UploadFileController
package com.example.demo.controller;
import com.example.demo.core.ret.RetResponse;
import com.example.demo.core.ret.RetResult;
import com.example.demo.core.utils.UploadActionUtil;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@RestController
@RequestMapping("/uploadFile")
public class UploadFileController {
@PostMapping("/upload")
public RetResult<List<String>> upload(HttpServletRequest httpServletRequest) throws Exception {
List<String> list = UploadActionUtil.uploadFile(httpServletRequest);
return RetResponse.makeOKRsp(list);
}
}
Шесть: тест
открытый почтальон
Введите localhost:8080/uploadFile/upload
Примечание. Параметры запроса следующие.
Возвращаемое значение — путь к файловому хранилищу.
Откройте заданный путь хранения
ок, загрузка прошла успешно
адрес проекта
Адрес облака кода:git ee.com/bean также/no SPR…
Адрес гитхаба:GitHub.com/my bean also/no s…
Писать статьи непросто, если это вам поможет, нажмите звездочку
конец
Добавление функции загрузки нескольких файлов завершено, и последующие функции будут обновляться одна за другой.Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной по адресу mr_beany@163.com. Также попросите руководства у всех великих богов, спасибо всем.