技术标签: java java开发常遇问题 后端 开发语言
项目中需要调用别人的接口上传一个文件,别人的接口参数为MultipartFile类型,需要对File文件进行一个转换再进行上传
1 方法一
public static MultipartFile getMultipartFile(File file) {
FileItem item = new DiskFileItemFactory().createItem("file"
, MediaType.MULTIPART_FORM_DATA_VALUE
, true
, file.getName());
try (InputStream input = new FileInputStream(file);
OutputStream os = item.getOutputStream()) {
// 流转移
IOUtils.copy(input, os);
} catch (Exception e) {
throw new IllegalArgumentException("Invalid file: " + e, e);
}
return new CommonsMultipartFile(item);
}
可以设置为静态方法,也可以使用对象进行调用
File file = new File("D:\\a.txt");
MultipartFile cMultiFile = getMultipartFile(file);
2 方法二
// 第二种方式
public static MultipartFile getMultipartFile(File file) {
DiskFileItem item = new DiskFileItem("file"
, MediaType.MULTIPART_FORM_DATA_VALUE
, true
, file.getName()
, (int)file.length()
, file.getParentFile());
try {
OutputStream os = item.getOutputStream();
os.write(FileUtils.readFileToByteArray(file));
} catch (IOException e) {
e.printStackTrace();
}
return new CommonsMultipartFile(item);
}
可以设置为静态方法,也可以使用对象进行调用
File file = new File("D:\\a.txt");
MultipartFile cMultiFile = getMultipartFile(file);
3 方法三,创建FileItem
public static FileItem createFileItem(String filePath, String fileName){
String fieldName = "file";
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem item = factory.createItem(fieldName, "text/plain", false,fileName);
File newfile = new File(filePath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
try (FileInputStream fis = new FileInputStream(newfile);
OutputStream os = item.getOutputStream()) {
while ((bytesRead = fis.read(buffer, 0, 8192))!= -1)
{
os.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
return item;
}
File file = new File("D:\\a.txt");
FileItem fileItem = createFileItem(file.getPath(),file.getName());
MultipartFile cMultiFile = new CommonsMultipartFile(fileItem);
4 方法4,添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
import org.springframework.mock.web.MockMultipartFile;
File file = new File("D:\\a.txt");
MultipartFile cMultiFile = new MockMultipartFile("file", file.getName(), null, new FileInputStream(file));
5 如果传输有点问题可能传输的类型有点不同
MediaType.MULTIPART_FORM_DATA_VALUE
更改为
MediaType.TEXT_PLAIN_VALUE
作为程序员第 76 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
文章浏览阅读375次。RandomAccessFile 读取和存储文件;java读取大文件_randomaccessfile读取文件
文章浏览阅读2.8k次。当然,还可以指定自定义的格式转化显示。_int 格式化为时分秒
文章浏览阅读259次。Spring事务_spring事务机制
文章浏览阅读1.2w次,点赞4次,收藏90次。Matlab-拓扑图绘制(1)效果图话不多说,先上效果图:这是8个节点的全连接拓扑,即任意两点之间均连接,但连接的权重不同,在图上主要呈现的是拓扑连接关系:全连接标记节点的名称:1, 2,…, 8标记连接权重:0.28125, 0.42188,…连接权重越大,连接线越粗连接线的线型设置:虚线代码clcclearvarsclose alltic%==== 构建邻接矩阵g ====%n = 8; % 节点个数g = ones(n) - _给定邻接矩阵绘制拓扑图的方法
文章浏览阅读3.4k次,点赞4次,收藏35次。MySql8.0 版本 和 5.0 的加密规则不一样,而现在的可视化工具只支持旧的加密方式。在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。因此,需要先卸载自带的MariaDB,再安装MySQL。如果直接安装MySQL,会和MariaDB的文件冲突。_mysql centos下载
文章浏览阅读77次。本文来自:[url]http://bbs.51cto.com/thread-2520-1-1.html[/url] 经过三个月的奋斗,终于等到了这一天“11.5”。带着一颗沉重的心到来考场,也许我是所有考生第一个来到考场。9点的考试,我7点多就来了考场,一直到考场外徘徊着。等了差不多一个小时,看到了监考老师带着试卷来了,考生也一个接一个地来到考场。心跳加快,也不是紧张,就是一..._一个网工的故事
文章浏览阅读978次,点赞2次,收藏10次。回溯法其实就是不断地试探,看前方的路是否可以走,如果不行就退回一步,再换一个办法。_算法策略 回溯法
文章浏览阅读309次。1.关闭mysql服务2.管理员打开命令提示符,输入mysqld --console --skip-grant-tables --shared-memory输入后回车,放在一旁。3.再新建一个cmd窗口(用管理员身份打开)—win键+R,输入mysql -uroot -p然后回车键(Enter),弹出输入密码,不理,再次回车键(Enter)4.依次输入以下操作先刷新一下权限表:flush privileges;然后我们改密码:输入ALTER USER 'root'@'localh_window10清除本地mysql密码
文章浏览阅读684次。VMware vSphere Hypervisor (ESXi) Offline Bundle(脱机捆绑包)镜像。服务器安装版本与平时安装版本有所不同,由于服务器缺少阵列卡驱动,需将阵列卡驱动注入。注意:将镜像刻录到U盘时写入方式为USB-HDD+ V2或USB-ZIP+ V2。文件放入文件夹中,在文件夹中再创建一个文件夹,将。定制版镜像,阵列卡驱动完成注入!最新版(自己下载,以上所需文件。在“文件”选项中打开刚才生成的。下载自己去淘宝买一次性下载)文件,选中解除锁定,并应用。注意:下载镜像时需下载。_esxi6.7镜像
文章浏览阅读326次。flexible适配步骤_flexible.js
文章浏览阅读1.9k次,点赞6次,收藏5次。而在我们输入时,其实输入了两个数据,一个是‘A’,另一个是‘\n’,而scanf在遇到(空格,换行等)停止读取数据,而‘\n’就被下一次的scanf给读走了;但是如果是一次输入多个字符的情况,当我们在屏幕上输入一个字符时,不能像输入整型那样输入一个空格再输入下一个字符,这样会将空格当成一个字符赋给下一个变量,直接输入两个字符就行(情况1)① scanf正常运行时,返回值是它读取的变量的个数,如果输入错误或停止,会返回EOF,EOF的值为-1。整型的输入:格式符相邻,输入时中间可以加上空格或回车。_c语言输入字符
文章浏览阅读2.6w次,点赞2次,收藏44次。浪潮服务器U盘安装系统无法识别到电脑硬盘问题的解决首先说明一下,我是开发人员,不是专业的运维。公司来了一台服务器要我给他装linux系统,我呢就按正常的U盘安装系统方法操作,结果在选择安装位置指定磁盘的时候,发现只有我插入的那张U盘别检测到,服务器有一张1T的硬盘却没有被检测到。于是找了很多方法都没用,最终在联系厂家,在他们专家的指导下成功的解决了这个问题。问题如下图解决步骤:服务器开机..._there is no sata device