文件上传前后端实例

前端代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile" value="请选择文件">
<input type="submit" value="上传">
</form>
</body>
</html>



后端代码
package com.audittool.controller;

import com.audittool.net.ResponseData;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.*;


/**
*
* 文件上传处理类
*
*/


@RestController
public class FileController extends HttpServlet {
//记录错误信息
private static final Logger log = LoggerFactory.getLogger(BasicInformationController.class);
SimpleDateFormat sd = new SimpleDateFormat("yyyy/MM/dd");
@PostMapping("/upload")
public String upload(MultipartFile uploadFile, HttpServletRequest req){
String realPath = "D:\\项目库\\State Grid Audit Dashboard\\src\\main\\resources\\upload";
/* String format = sd.format(new Date());*/
File file = new File(realPath);
if (!file.isDirectory()){
file.mkdirs();
}
// 获取附件原名(有的浏览器如chrome获取到的是最基本的含 后缀的文件名,如myImage.png)
// 获取附件原名(有的浏览器如ie获取到的是含整个路径的含后缀的文件名,如C:\\Users\\images\\myImage.png)
String fileName = uploadFile.getOriginalFilename();
// 如果是获取的含有路径的文件名,那么截取掉多余的,只剩下文件名和后缀名
/*int index = fileName.lastIndexOf("\\");
if (index > 0) {
fileName = fileName.substring(index + 1);
}*/
// 判断单个文件大于1M
long fileSize = uploadFile.getSize();
if (fileSize > 1024 * 1024) {
System.out.println("文件大小为(单位字节):" + fileSize);
System.out.println("该文件大于1M");
}
// 当文件有后缀名时
if (fileName.indexOf(".") >= 0) {
// split()中放正则表达式; 转义字符"\\."代表 "."
String[] fileNameSplitArray = fileName.split("\\.");
/*// 加上random戳,防止附件重名覆盖原文件
fileName = fileNameSplitArray[0] + (int) (Math.random() * 100000) + "." + fileNameSplitArray[1];*/
}
// 当文件无后缀名时(如C盘下的hosts文件就没有后缀名)
if (fileName.indexOf(".") < 0) {
// 加上random戳,防止附件重名覆盖原文件
fileName = fileName + (int) (Math.random() * 100000);
}
System.out.println("fileName:" + fileName);

// 根据文件的全路径名字(含路径、后缀),new一个File对象dest
File dest = new File(realPath + fileName);
// 如果该文件的上级文件夹不存在,则创建该文件的上级文件夹及其祖辈级文件夹;
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
try {
// 将获取到的附件file,transferTo写入到指定的位置(即:创建dest时,指定的路径)
uploadFile.transferTo(new File(file,fileName));
System.out.println("文件的全路径名字(含路径、后缀)>>>>>>>" + realPath+"文件名称:" + fileName);
return "上传成功";
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "上传失败";
}
}
posted @ 2021-07-02 10:58  才没有木头  阅读(186)  评论(0)    收藏  举报