java上传文件前台_java从前台到后台上传文件流程,亲测可用

java从前端到后端上传大文件流程,亲测可用

1、前期准备

java框架:servelet原生框架或者spring boot框架,其他框架我没测,不知道效果,但应该都可以。此文以spring boot为例。其运行在tomcat下。

前端:普普通通html+jquery即可

服务器:上传的目标文件夹必须具有可读可写权限

2、开始干活——首先我们解决后端的问题

为了简便,我把所有代码都写到一个文件里面了,都在controller里面,具体看代码:

@RequestMapping("/uploadFile")

public int uploadFile(@RequestParam("uploadFile") MultipartFile file){

//1、判断文件是否为空

if(file.isEmpty()){

return null;

}

//2、存储的时候添上时间,防止文件名重复

Date date = new Date();

SimpleDateFormat dateFormat= new SimpleDateFormat("yyyyMMddhhmmss");

String fileName = dateFormat.format(date) + "_" + file.getOriginalFilename();

//文件实际存储地址,以linux系统为标杆

String filePath = "/javaweb/tomcat/apache-tomcat-8.5.41/webapps/resources/";

//可供下载的链接地址,将ip替换为你自己的ip即可,resources文件夹的位置很重要,不同的位置,可供下载的链接地址也就不一样。,可参考文件实际存储地址来设。

String fileLink = "http://0.0.0.0:8080/resources/" + fileName;

File dest = new File(filePath + fileName);

try {

file.transferTo(dest);

}catch (IOException e){

e.printStackTrace();

return "500";

}

return "200"

}

3、然后我们解决前端问题

html我们采用input标签,指定file类型来浏览上传文件,通过accept属性来限制上传的文件类型。

html部分:

点击上传

javascript最重要的就是采用了FormData()来作为承载数据的小船,带我们穿越茫茫大海通向远方的港口。

对应的javascript部分:

function upload() {

var formData = new FormData();

formData.append("uploadFile",$("#myFile")[0].files[0]);

//还可以按照如下方式添加其他数据

//formData.append("projectID",projectID);

//formData.append("reportType",type);

$.ajax({

type:"post",

url:"此处填写刚才controller的请求地址",

data:formData,

dataType:"json",

async:false,

processData : false, // 使数据不做处理

contentType : false, // 不要设置Content-Type请求头

success:function(data){

// 成功拿到结果放到这个函数 data就是拿到的结果

console.log(data);

if(data == "200"){

alert("上传报告成功!");

}else{

alert("上传失败");

}

},

})

}

4、解决文件上传大小限制

此时,恭喜你,你已经可以上传文件啦!但很遗憾的是,此时的上传文件是有大小限制的,超过1MB还是2MB的时候就上传失败,为什么呢?是因为spring还是tomcat做了文件限制(其实我忘了,但反正就是他俩其中一个),我们想完成大文件的上传,就必须更改下配置。下面,跟我来一起翻越这座高山。

(1)首先我们更改配置文件——application.properties

在配置文件下,添加如下语句:

#配置文件传输

spring.servlet.multipart.enabled =true

spring.servlet.multipart.file-size-threshold =0

#单个数据的大小

multipart.max-file-size = 100Mb

#总数据的大小

multipart.max-request-size=100Mb

(2)然后我们更改spring boot启动类

什么?你不知道启动类是哪个?那我可帮不了你了,多看看spring boot基础吧。

废话不多少,直接上代码。

首先,我们给启动类添加一个注解@Configuration

然后,在启动类里面添加一个@Bean方法,配置上传文件大小

代码如下:

@Configuration

@SpringBootApplication

public class ApiApplication {

public static void main(String[] args) {

SpringApplication.run(ApiApplication.class, args);

}

/**

* 配置上传文件大小的配置

* @return

*/

@Bean

public MultipartConfigElement multipartConfigElement() {

MultipartConfigFactory factory = new MultipartConfigFactory();

// 单个数据大小

factory.setMaxFileSize("100MB");

/// 总上传数据大小

factory.setMaxRequestSize("100MB");

return factory.createMultipartConfig();

}

}

当当当!至此解决!

你可能感兴趣的:(java上传文件前台)