文件上传 Window & Linux
1. 在application配置文件添加图片存储路径的参数
上传路径前必须加 file:/ 否则网页图片请求可能404
window
gofy:
uploadPath: file:/F:/fileUpload/
imagesPath: F:/fileUpload/
imagesUrl: http://localhost:8888/images/
linux(在根目类home下的fileUpload文件夹):
gofy:
uploadPath: file:/home/fileUpload/
imagesPath: /home/fileUpload/
imagesUrl: http://域名/images/
2. 添加文件上传配置类
/**
* 上传配置类
* 图片放到/F:/fileUpload/后,从磁盘读取的图片数据scr将会变成images/picturename.jpg的格式
*/
@Configuration
public class UploadConfig implements WebMvcConfigurer { /**
* 在配置文件中配置的文件保存路径
*/
@Value("${gofy.uploadPath}")
private String uploadPath; @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if(uploadPath.equals("") || uploadPath.equals("${gofy.imagesPath}")){
String imagesPath = WebMvcConfig.class.getClassLoader().getResource("").getPath();
System.out.print("1.上传配置类imagesPath=="+imagesPath+"\n");
if(imagesPath.indexOf(".jar")>0){
imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));
}else if(imagesPath.indexOf("classes")>0){
imagesPath = "file:"+imagesPath.substring(0, imagesPath.indexOf("classes"));
}
imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/"))+"/images/";
uploadPath = imagesPath;
}
//System.out.print("imagesPath============="+mImagesPath+"\n");
//LoggerFactory.getLogger(WebAppConfig.class).info("imagesPath============="+mImagesPath+"\n");
registry.addResourceHandler("/images/**").addResourceLocations(uploadPath);
// TODO Auto-generated method stub
//System.out.print("2.上传配置类mImagesPath=="+mImagesPath+"\n"); WebMvcConfigurer.super.addResourceHandlers(registry);
}
}
3. 添加文件上传的工具类
数据库最好储存动态路径和绝对路径,动态路径用于项目使用,绝对路径便于文件删除
/**
* 文件上传工具类
*/
@Component
public class UploadUtil { @Value("${gofy.imagesPath}")
private String imagesPath;
@Value("${gofy.imagesUrl}")
private String imagesUrl;
/**
* 返回文件保存的路径
* @param file
* @return
*/
private String url;
public Map getFileUrl(MultipartFile file){
Map<String,String> map = new HashMap<String,String>();
System.out.println("上传文件===");
//判断文件是否为空
if(file.isEmpty()){
map.put("error","文件不能为空");
return map;
} //获取文件名
String fileName = file.getOriginalFilename();
System.out.println("上传的文件名为:"+fileName);
//加个时间戳,尽量避免文件名称重复
fileName= new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + fileName;
System.out.println("(加个时间戳,尽量避免文件名称重复)保存的文件名为: "+fileName); //文件绝对路径
String path = imagesPath+fileName;
System.out.println("保存文件的绝对路径"+path); //创建文件路径
File dest = new File(path); //判断文件父目类是否存在
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
} try{
//上传文件
file.transferTo(dest);//保存文件
System.out.println("保存文件路径"+path);
url = imagesUrl+fileName;
System.out.println("保存的完整url==="+url);
}catch (IOException e){
e.printStackTrace();
map.put("error","上传失败");
return map;
}
map.put("url",url);
map.put("path",path);
return map;
}
}
我的个人博客
文件上传 Window & Linux的更多相关文章
- 《如何将windows上的软件包或文件上传到linux服务上》
昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...
- 将Windows上的文件上传到Linux上
下载一个SSH Secure Shell Client即可. SSHSecureShellClient-3.2.9下载地址: 免费下载地址在 http://linux.linuxidc.com/ 用户 ...
- 通过XShell实现windows文件上传到Linux服务器上
.XShell上传文件到Linux服务器上 在学习Linux过程中,我们常常需要将本地文件上传到Linux主机上,这里简单记录下使用Xsheel工具进行文件传输 1:首先连接上一台Linux主机 2: ...
- 将windows下的文件上传到Linux服务器上
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...
- xshell如何将Windows文件上传到linux
1. 首先先将你xshell配置好用户名及密码等,必须使用有权限下载的账号进行操作. 使用 yum provides */rz 这条命令,查看你系统自带的软件包的信息. 2.在输出的信息中可 ...
- 中文名文件上传到linux服务器上以后文件名会乱码(openoffice)
1.中文名文件上传后保存在linux服务器上文件名会乱码,但是我们通过SSH直接对服务器上的一个文件进行重命名是可以使用中文的,而且显示出来是正确的,这说明服务器是可以支持中文的. 2.而为什么上传的 ...
- 本地文件上传到Linux服务器
1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地目录) 例如scp root@192.168.0.101: ...
- Jenkins使用-windows机器上的文件上传到linux
一.背景 最近的一个java项目,使用maven作包管理,通过jenkins把编译打包后war部署到另一台linux server上的glassfish(Ver3.1)中,在网上搜索的时候看到有人使用 ...
- RPC框架下实现文件上传到linux服务器
一.前端使用element -ui 的upload组件 :data 表示额外传递的参数, :header 表示设置请求头参数,如,token等, action表示后台api接口的地址 二. conto ...
随机推荐
- JZOJ 3526. 【NOIP2013模拟11.7A组】不等式(solve)
3526. [NOIP2013模拟11.7A组]不等式(solve) (File IO): input:solve.in output:solve.out Time Limits: 1000 ms M ...
- javascript的constructor属性介绍
之前闲来了解了__proto__和prototype的区别,每个对象都有隐私属性__proto__,而prototype是javascript函数特有的属性.那么constructor属性呢?最近是遇 ...
- vue的插件使用
插件通常是为Vue添加全局功能,vue的官网介绍了5中添加插件的方法. vue的插件有个公开方法install.第一个参数是Vue构造器,第二个参数是一个可选的选项对象. 在plugin.js中可以这 ...
- python自动化第一课 - python安装以及pycharm配置
1.安装python 1.1打开python官网https://www.python.org/downloads/windows/进行下载Python 3.8.0 1.2下载完毕后进行安装,1勾选 A ...
- C++类的多态
目录 一.静态多态 二.动态多态 三.虚函数 四.纯虚函数 五.C++ 接口(抽象类) 六.应用经验 七.版权声明 多态按字面的意思就是多种形态.当类之间存在层次结构,并且类之间是通过继承关联时,就可 ...
- php通过单例模式使一个类只能创建一个对象。
单例模式也就是一个类只能创建出一个对象 首先你要知道它的基本思想为:三私一公! 何为三私一公? 1(私).防止用户通过构造方法创建对象,因此私有化构造方法. 2(公).创建一个公共静态函数用来进入 ...
- Angular入门之环境搭建(VS code)(转载)
安装Visual Studio Code VS code和我们常用的VS压根不是一回事,它只是一个开源的轻量级编辑器,而不是IDE,因为支持typescript语法,且插件功能丰富,所以选择 官网下载 ...
- Java第一节课考试
1 package kaoshi; import java.util.Scanner; public class ScoreInformation { Scanner input=new Scanne ...
- Python习题集(一)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! 题目 有一个数据list of dict如下 a = [ {"}, {"}, {"}, ] 写入到本 ...
- Vulnhub靶场DC-1 WP
前言 之前提到过最近在做vlunhub的靶场复现工作,今天开始更新writeup吧.(对着walkthrough一顿乱抄嘻嘻嘻) 关于DC-1(官网翻译来的) 描述 DC-1是一个专门构建的易受攻击的 ...