图片上传怎么用File接受文件
xl_echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!
---
> 图片上功能有很多的实现,博主这里使用的是vue+iview+springboot实现的。区别于其他图片上传不同的是,这里是开发的时候实际碰到的问题,比如File类型的使用。阅读建议--直接阅读底部最终实现可以快速开发 ### 实际问题的产生 在我们普通图片上传的过程中,我们一般都是使用MultipartFile来进行接收。但是由于业务需求,在我们的部分业务中必须要拿到File类型的文件,不然就没法进行开发。图片上传接受File就成为了这次需求的重点,但是试了很多次,试下你都很复杂。于是便有了一下方案,直接用MultipartFile来接受,但是需要File类型的时候,使用MultipartFile来转换。
### MultipartFile转File核心代码 ```java File file = new File("F:" + "/" + originalFilename); multipart.transferTo(file); ```
> 这里利用的原理很假单,就是从流中读取数据覆盖到file文件中。注意:tranferTo不能读取两次,流中的数据读完之后,流就自动关闭了。需要读取两次,第二次直接在file中去即可。
### 碰到的坑:本地和服务器路径不一样。 简单来说就是系统不一的问题,开发的时候,大多数都用的是windows和mac的系统,这种情况下一般开发可能先考虑本地测试,实现功能为主。但是如果要上到服务器上面,路径的区别问题,导致本地能实现的转换,到服务器就会报错。所以我们需要做系统的识别
### 系统识别代码如下:
```java
String osName = System.getProperty("os.name", "");
if (osName.startsWith("Windows")) {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
} else if (osName.startsWith("Mac OS")) {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
} else {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
}
```
### 碰到的坑: 当如果是linux的时候,可能无法创建文件,没有权限,所以要开通权限。最终实现如下:
```java
public File multipartToFile(MultipartFile multipart) throws IOException {
String osName = System.getProperty("os.name", "");
String originalFilename = multipart.getOriginalFilename();
if (osName.startsWith("Windows")) {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
File file = new File("F:" + "/" + originalFilename);
multipart.transferTo(file); return file;
} else if (osName.startsWith("Mac OS")) {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
File file = new File("/Users/pavankumar/Desktop/" + originalFilename);
multipart.transferTo(file); return file;
} else {
System.out.println("当前操作系统为" + osName + "系统--------------------------");
File file=new File("/usr/local/java/" + originalFilename);
file.setWritable(true, false);
multipart.transferTo(file); return file;
}
}
```
欢迎添加微信交流学习
---

图片上传怎么用File接受文件的更多相关文章
- Jquery图片上传组件,支持多文件上传
Jquery图片上传组件,支持多文件上传http://www.jq22.com/jquery-info230jQuery File Upload 是一个Jquery图片上传组件,支持多文件上传.取消. ...
- 链接ftp,把文件或图片上传到ftp指定的文件夹中
/******************************************************************** * * * Filename : .java * Auth ...
- 图片上传利用request.getInputStream()获取文件流时遇到的问题
图片上传功能是我们web里面经常用到的,获得的方式也有很多种,这里我用的是request.getInputStream()获取文件流的方式.想要获取文件流有两种方式,附上代码 int length = ...
- spring boot图片上传至远程服务器并返回新的图片路径
界面上传图片时考虑到可能会有用户的图片名称一致,使用UUID来对图片名称进行重新生成. //UUIDUtils public class UUIDUtils { public static Strin ...
- input file 图片上传
使用第三方:jquery.ajaxfileupload.jsinput中的name根据后端来定 <form method="post" enctype="multi ...
- golang学习之beego框架配合easyui实现增删改查及图片上传
golang学习之beego框架配合easyui实现增删改查及图片上传 demo目录: upload文件夹主要放置上传的头像文件,main是主文件,所有效果如下: 主页面: 具体代码: <!DO ...
- PHP+js实现图片上传,编辑
文件上传,点击按钮并选择文件后,文件会临时存到一个位置,会有一个临时名字: 然后在php文件中处理,给文件起名并将文件从临时为止搬到服务器,把需要的文件信息返回给前端页面: 最后表单提交时,把文件信息 ...
- SpringBoot图片上传(五) 上一篇的新版本,样式修改后的
简单描述:一次上传N张图片(N可自定义):上传完后图片回显,鼠标放到已经上传的图片上后,显示删除,点击后可以删除图片,鼠标离开后,图片恢复. 效果:一次上传多个图片后的效果 上传成功: 鼠标悬浮到图片 ...
- SpringBoot图片上传(四) 一个input上传N张图,支持各种类型
简单介绍:需求上让实现,图片上传,并且可以一次上传9张图,图片格式还有要求,网上找了一个测试了下,好用,不过也得改,仅仅是实现了功能,其他不尽合理的地方,还需自己打磨. 代码: //html<d ...
随机推荐
- [转][osg]探索未知种族之osg类生物【目录】
作者:3wwang 原文链接:http://www.3wwang.cn/html/article_58.html 前序 探索未知种族之osg类生物---起源 ViewBase::frame函数中的Vi ...
- 十一、postman接口测试(安装nodejs和npm)
cmder安装:https://cmder.net/ node安装:https://nodejs.org/zh-cn/ 打开cmd命令,在命令提示窗输入 npm install -g cnpm --r ...
- MySQL数据库查找多个字段值全部相同的记录
数据库中用户表,数据从第三方系统导入,由于一些垃圾数据,存在用户名和密码都相同的账户,造成接口上一些问题,SQL语句如下: and Account2>;
- 深层对象转深层数组(重点:先把对象转数组,直接for in 遍历对象不太可行)
var json: { PRow0: { style: { width: 10 } }, PTable1: { style: { height: 20 } } } const jsonToArrTre ...
- 【转】百万年薪挖了p8,难道是水货?
大厦新搬进来一家创业公司,老板红光满面地提着果篮上楼拜访,说是刚拿到了投资人的钱,正准备扩充团队大干一场.那个时候的他踌躇满志,顾盼生辉.当时我想,能在这个大环境下拿到投资的公司,做的产品应该是有前景 ...
- 微信API V3 RESTFUL
{"code":"SIGN_ERROR","message":"商户未设置加密的密钥,请登录商户平台操作!请参考http://kf ...
- 预训练中Word2vec,ELMO,GPT与BERT对比
预训练 先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用.当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加 ...
- Linux DHCP 服务器配置与管理
一.环境介绍: 运行软件:VMware Workstation Pro 14 系统环境:CentOS-7-x86_64-1810 二.操作配置: 1.DHCP 服务器搭建 1)安装DHCP yum i ...
- QT qml TreeView展示数据结构于界面
Class QAbstractItemModel: 使用QML的TreeView类来展示树状的结构,对应的是QT的Model/View模型.这个model是一个数据模型,要为TreeView提供一个 ...
- Linux chomd命令
file 语法为: chmod abc file 其中a,b,c各为一个数字,分别表示User.Group.及Other的权限. r=4,w=2,x=1 若要rwx属性则4+2+1=7: 若要rw-属 ...