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;
}
}

我的个人博客

www.gofy.top

文件上传 Window & Linux的更多相关文章

  1. 《如何将windows上的软件包或文件上传到linux服务上》

    昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...

  2. 将Windows上的文件上传到Linux上

    下载一个SSH Secure Shell Client即可. SSHSecureShellClient-3.2.9下载地址: 免费下载地址在 http://linux.linuxidc.com/ 用户 ...

  3. 通过XShell实现windows文件上传到Linux服务器上

    .XShell上传文件到Linux服务器上 在学习Linux过程中,我们常常需要将本地文件上传到Linux主机上,这里简单记录下使用Xsheel工具进行文件传输 1:首先连接上一台Linux主机 2: ...

  4. 将windows下的文件上传到Linux服务器上

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...

  5. xshell如何将Windows文件上传到linux

    1.      首先先将你xshell配置好用户名及密码等,必须使用有权限下载的账号进行操作. 使用 yum provides */rz 这条命令,查看你系统自带的软件包的信息. 2.在输出的信息中可 ...

  6. 中文名文件上传到linux服务器上以后文件名会乱码(openoffice)

    1.中文名文件上传后保存在linux服务器上文件名会乱码,但是我们通过SSH直接对服务器上的一个文件进行重命名是可以使用中文的,而且显示出来是正确的,这说明服务器是可以支持中文的. 2.而为什么上传的 ...

  7. 本地文件上传到Linux服务器

    1.从服务器上下载文件scp username@servername:/path/filename /var/www/local_dir(本地目录) 例如scp root@192.168.0.101: ...

  8. Jenkins使用-windows机器上的文件上传到linux

    一.背景 最近的一个java项目,使用maven作包管理,通过jenkins把编译打包后war部署到另一台linux server上的glassfish(Ver3.1)中,在网上搜索的时候看到有人使用 ...

  9. RPC框架下实现文件上传到linux服务器

    一.前端使用element -ui 的upload组件 :data 表示额外传递的参数, :header 表示设置请求头参数,如,token等, action表示后台api接口的地址 二. conto ...

随机推荐

  1. koa进阶史(二)

    之前想着放弃CAS的验证吧,但是又去请教了一个大牛,了解到sf公司的CAS验证校验的参数不是sessionId而是另外两个,后登陆sit环境偷了两个参数后,后台接口成功返回200.然后node层也就能 ...

  2. [pdo_mysql.lo] Error 1 或者 [php_mysql.lo] Error 1

    make: *** [pdo_mysql.lo] Error 1 make: *** [php_mysql.lo] Error 1 这是因为这是因为在编译时需要 MySQL 的头的文件.而它按默认搜索 ...

  3. css3 HSLA 颜色制造半透明效果

    简介 HSL色彩模式是工业界的一种颜色标准,是通过对色调(H).饱和度(S).亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色, ...

  4. drf分页功能

    什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1 个接口,根据method的不 ...

  5. 动态创建多个button

    2020-03-13 每日一例第6天 1.新建窗体windowform,修改text值: 2.找到mouseclick事件,填写代码: Random rm = new Random(); Button ...

  6. Hadoop集群搭建(三)~centos6.8网络配置

    安装完centos之后,进入系统,进行网络配置.主要分为五个部分: 修改虚拟机网络编辑器:配置Winodws访问虚拟机:配置centos网卡:通过网络名访问虚拟机配置网络服务. (一)虚拟机网络编辑器 ...

  7. js Number方法总结

    Number构造属性 Number.EPSILON // 两个可表示(representable)数之间的最小间隔. Number.MAX_SAFE_INTEGER // JavaScript 中最大 ...

  8. javaScript 基础知识汇总 (十)

    1.New Function 语法:let func = new Function ([arg1[, arg2[, ...argN]],] functionBody) //无参数示例: let say ...

  9. 三、create-react-app新旧版中使用less和antd并修改主题颜色

    引入less 如果项目根目录中没有config文件夹,首先暴露出项目配置文件,项目下执行: npm run eject 如果项目是从git仓库中pull下来的的话,必须确保本地项目与仓库中没有冲突,才 ...

  10. IOptions、IOptionsMonitor以及IOptionsSnapshot

    背景 ASP.NET Core引入了Options模式,使用类来表示相关的设置组.简单的来说,就是用强类型的类来表达配置项,这带来了很多好处.初学者会发现这个框架有3个主要的面向消费者的接口:IOpt ...