话不多说直接上代码!
框架是:spring-什么都行!只要有控制器就好
JS
//在html提交按钮中onclick中调用此方法即可
add: function () {
const file=$("#file")[0].files;
const formData = new FormData();
//这里可以改为上传多个图片,把[0]去掉就行
formData.append("file", file[0]);
$.ajax({
type: "POST",
//请求地址/console/addFile,根据自己需要填写
url: request('/console/addFile'),
data: formData,
dataType: "json",
mimeType: "multipart/form-data",
cache: false,
async: false,
//下面两行必加
processData: false,
contentType: false,
traditional: true,
success: function (result) {
//成功执行的回调方法,根据需要去写就行了
},
error: function (result) {
//错误执行的回调
}
})
}
HTML
文件:
<input id="file" multiple="multiple" type="file" name="file">
<button onclick="add()" type="submit">提交</button>
<!--引用js-->
<script type="text/javascript" src="/js/add.js"></script>
form不要都行,只要有input类型为file,再来一个submit就可以了。
JAVA
上传方法
package cn.xyz.commons.utils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
public class UploadFile {
public String upload(MultipartFile file) throws Exception {
//本地测试地址
// String PATH = "E:\\uploadDev\\";
//服务器用地址(文件夹地址)
String PATH = "/opt/nginx/html/myfile";
try {
// 文件名
String fileName = file.getOriginalFilename();
StringBuilder fileUrl = new StringBuilder();
String now = String.valueOf(System.currentTimeMillis());
fileUrl.append(PATH);
fileUrl.append(now);
fileUrl.append(fileName);
// 转存文件到指定的路径
try {
file.transferTo(new File(String.valueOf(fileUrl)));
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
return "http://(你的服务器域名):8888/myfile/"+now+fileName;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
上传方法:我这里的操作全都不要都可以,只要有
// 转存文件到指定的路径
try {
file.transferTo(new File(“服务器地址”));
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
即可
控制器代码
@ResponseBody
@RequestMapping(value = "/console/addFile")
public String addAppVersion(@RequestParam("file") MultipartFile[] file) {
//这里用MultipartFile[]数组接受可以接受多个文件,也可以为空,非常方便
try {
//文件上传
UploadFile uploadFile = new UploadFile();
//数据库对应对象
MyFile myFile= new MyFile();
if(file.length>0){
String filUrl= uploadFile.upload(file[0]);
myFile.filUrl(filUrl);
}
//最后将myFile保存到数据库即可
return "上传完成";
}catch (Exception e){
return "错误!"+e.getMessage();
}
}
我这边是把文件放在nginx上,所以可以直接访问数据库存储的地址可直接访问静态资源
注:(如有任何疑问可留言)