图片上传与回显
图片上传与回显
上传
前端页面就不展示了,就是普通的ajax请求,具体可以参照饿了吗-UI。
参数 :MultipartFile file
if (file.isEmpty()){
return Result.error("请上传文件");
}
long currentTime = System.currentTimeMillis();
Date date = new Date(currentTime); //创建Date对象并传入毫秒值
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //自定义日期格式
String formattedDateTime = sdf.format(date);
//截取后缀
String fileName = file.getOriginalFilename();
if (fileName == null) {
return Result.error("不能为空");
}
int lastDotIndex = fileName.lastIndexOf('.');
String fileExtension = fileName.substring(lastDotIndex);
if (!(".jpg".equals(fileExtension)||".png".equals(fileExtension)||".pdf".equals(fileExtension)))
return Result.error("图片格式不对");
UUID uuid = UUID.randomUUID();
String string = uuid.toString().replaceAll("-","");
//保存地址
String path = 物理地址+formattedDateTime+"\\"+string+fileExtension;
//返回地址
String url = 域名或者ip地址+formattedDateTime+"/"+string+fileExtension;
File f = new File(path);
try {
File fileParent = f.getParentFile();
if(!fileParent.exists()){
//如果文件夹不存在则创建文件夹
System.out.println("文件夹不存在,新建目录");
fileParent.mkdirs();
}
file.transferTo(f);
} catch (IOException e) {
e.printStackTrace();
System.out.println("上传失败"+ e.getMessage());
return Result.error("上传失败");
}
return Result.success("上传成功",url);
回显
好了,问题来了。怎么将IP地址(127.0.0.1)映射到物理地址(C:某某某/某某某)呢?
这就不得不提到NGINX这个东西了。PS:我被它折磨了好多天。
如果启动了 nginx,然后中途修改配置文件,记得先关闭nginx再重新启动。
在server加入
server {
listen 80;
server_name localhost;
location ~ .*\.*(jpg|png|gif|jpeg)$ {
root 物理地址;
}}
这上面的意思是拦截后缀为jpg、png、gif、jpeg的请求,将localhost换成物理地址。当然localhost也能换成IP地址或者域名使用,这就得看自己的需求了。例子:localhost:80/img/test.jpg
等同于 物理地址/img/test.jpg
。
前端使用<img url = " "/>
就能访问到图片了。