目录
3.3.1 JarBasePath.getBaseJarPathStr()
3.2 FileUploadUtils.upload(filePath, file) --ruoyi框架自带的
4、Config --配置文件上传下载本地位置的(搞得我也是昏头转向的)
单文件上传篇
1、html
<!-- 注意,这个文件的上传和下载功能一定要放在一个form里方便处理-->
<form class="form-horizontal m" id="form-checkCarPhoto-show" th:object="${CarPhoto}">
<input id="id" name="id" th:field="*{id}" type="hidden">
<!-- 单文件上传按钮-->
<input id="filePath" name="filePath" class="form-control" type="file">
<a class="btn btn-success btn-xs " href="#" onclick="uploadFile()"><i class="fa fa-edit"></i>单文件上传</a>
<!-- 多文件打包下载按钮-->
<a class="btn btn-success btn-xs " href="#" onclick="downloadFile($('#id').val())"><i class="fa fa-edit"></i>全部下载</a>
</form>
2、JS
function uploadFile() {
var formData = new FormData(); //定义上传文件
if ($('#filePath')[0].files[0] == null) { //判断文件是否为空
$.modal.alertWarning("请先选择文件路径");
return false;
}
formData.append('fileName', $("#fileName").val()); //放入文件名
formData.append('file', $('#filePath')[0].files[0]); //放入文件地址
$.ajax({
url: prefix + "/add/"+$('#id').val() , //controller文件映射,依据自己定义的写
type: 'post',
cache: false,
data: formData,
processData: false, //Jquery是否会序列化数据
//contentType:发送信息至服务器时内容编码类型(告诉服务器从浏览器提交过来的数据格式)
// 默认值为contentType = "application/x-www-form-urlencoded"
// 在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。
contentType: false,
dataType: "json",
success: function(result) {
$.operate.successCallback(result);
}
});
}
3、Controller
@PostMapping("/add/{cid}")
@ResponseBody
public AjaxResult addSave(@PathVariable("cid") Integer cid, @RequestParam("file") MultipartFile file, FileInfo fileInfo) throws IOException
{
// 上传文件路径
String filePath = Global.getProfile() + "check/";
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
CarPhoto carPhoto = new CarPhoto();
carPhoto.setPhotoUrl(fileName);
carPhoto.setCheckId(cid);
// 插入数据并返回结果至前端
return toAjax(carPhotoService.insertCarPhoto(carPhoto));
}
3.1 Global.getProfile()
package com.bloodmanage.common.config;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import com.bloodmanage.common.utils.http.JarBasePath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.bloodmanage.common.utils.StringUtils;
import com.bloodmanage.common.utils.YamlUtil;
/**
* 全局配置类
*
* @author songzihao
*/
public class Global
{
private static final Logger log = LoggerFactory.getLogger(Global.class);
private static JarBasePath jarBasePath = new JarBasePath();
private static String NAME = "application.yml";
/**
* 当前对象实例
*/
private static Global global = null;
/**
* 保存全局属性值
*/
private static Map<String, String> map = new HashMap<String, String>();
private Global()
{
}
/**
* 静态工厂方法 获取当前对象实例 多线程安全单例模式(使用双重同步锁)
*/
public static synchronized Global getInstance()
{
if (global == null)
{
synchronized (Global.class)
{
if (global == null)
global = new Global();
}
}