java 中常见的文件上传方式_java中如何上传文件
在java里面文件上传的方式很多,最简单的依然是FileInputStream、FileOutputStream了,在这里我列举3种常见的文件上传方法代码
首先呢,使用springMVC原生上传文件方法,需要一些简单的配置,不多说,上图。 (推荐学习:java课程)
1.采用spring提供的上传文件的方法@RequestMapping("springUpload")
public String springUpload(HttpServletRequest request) throws IllegalStateException, IOException
{
long startTime=System.currentTimeMillis();
//将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//检查form中是否有enctype="multipart/form-data"
if(multipartResolver.isMultipart(request))
{
//将request变成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//获取multiRequest 中所有的文件名
Iterator iter=multiRequest.getFileNames();
while(iter.hasNext())
{
//一次遍历所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
if(file!=null)
{
String path="E:/springUpload"+file.getOriginalFilename();
//上传
file.transferTo(new File(path));
}
}
}
long endTime=System.currentTimeMillis();
System.out.println("Spring方法的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "/success";
}
2.采用file.Transto 来保存上传的文件,这是目前我认为最好的上传方式,也是我最喜欢的上传方式,代码简单,速度快。请看下面代码。/*
* 采用file.Transto 来保存上传的文件
*/
@RequestMapping("fileUpload2")
public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {
long startTime=System.currentTimeMillis();
System.out.println("fileName:"+file.getOriginalFilename());
String path="E:/"+new Date().getTime()+file.getOriginalFilename();
File newFile=new File(path);
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
file.transferTo(newFile);
long endTime=System.currentTimeMillis();
System.out.println("采用file.Transto的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "/success";
}
3.第三种采用流的方式上传,这种方法在新手学习的时候经常用到,但是我并不喜欢,因为它又慢又难写,请看@RequestMapping("fileUpload")
public String fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException {
//用来检测程序运行时间
long startTime=System.currentTimeMillis();
System.out.println("fileName:"+file.getOriginalFilename());
try {
//获取输出流
OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());
//获取输入流 CommonsMultipartFile 中可以直接得到文件的流
InputStream is=file.getInputStream();
byte[] bts = new byte[1024];
//一个一个字节的读取并写入
while(is.read(bts)!=-1)
{
os.write(bts);
}
os.flush();
os.close();
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long endTime=System.currentTimeMillis();
System.out.println("采用流上传的方式的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "/success";
}
简单的文件上传页面
java 中常见的文件上传方式_java中如何上传文件相关推荐
- java读文件几种方式_java中读取文件的方式有哪几种
java中读取文件的方式有哪几种 发布时间:2020-06-19 13:36:48 来源:亿速云 阅读:135 作者:鸽子 读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和 ...
- java定义数组_java中数组的三种定义方式_java中数组的定义及使用方法(推荐)...
java中数组的三种定义方式 java中,数组是一种很常用的工具,今天我们来说说数组怎么定义 [java] view plain copy /** * 数组的三种定义方法 * 1.数组类型[] 数组名 ...
- java中两种遍历集合的方式_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
- java中创建两种线程的方式_java中创建线程的两种方式有什么区别?
*** 一.创建线程 1.继承Thread类 定义类继承Thread, 重写run()方法, 将线程中要执行的代码写在run()方法中 创建该类对象, 调用start()方法就可以开启一条新线程, 新 ...
- PCBA加工中常见的两种焊接方式详解
PCBA加工中常见的两种焊接方式详解 PCBA加工,两种常见的焊接方式就是回流焊和波峰焊,与手动焊接技术相比,自动焊接技术具有减少人为因素的影响.提高效率.降低成本.提高质量等优势,在PCBA加工中, ...
- java图片上传下载_Java中文件上传下载 --使用Minio
Minio模板类: @RequiredArgsConstructor public class MinioTemplate implements InitializingBean { private ...
- java 输出文件到mac路径_Java 中几种获取文件路径的方式
原标题:Java 中几种获取文件路径的方式 1. 前言 Java开发中我们经常要获取文件的路径,比如读取配置文件等等.今天我们就关于文件的路径和如何读取文件简单地探讨一下. 2. 文件的路径 文件的路 ...
- java文件传输连接方式_Java 学习笔记 网络编程 使用Socket传输文件 CS模式
Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...
- 攻防演练中常见的8种攻击方式及应对指南
俗话说:"讲百遍不如打一遍",网络安全实战攻防演练被视为检验组织机构安全防护和应急响应能力,提高综合防控水平最有效的手段之一.那么,对蓝队来说,如何在攻防实战进行有效防护应对呢? ...
- java文件的相对路径_java中使用相对路径读取文件的写法总结 ,以及getResourceAsStream() (转)...
https://blog.csdn.net/my__sun_/article/details/74450241 读取文件的写法,相对路径 在当前的目录结构中读取test.txt的有四种写法 简单粗暴的 ...
最新文章
- OpenCV学习中遇到的小问题—关于图像赋值
- [XMAN2018排位赛]Dragon Quest [MRCTF2020]VirtualTree
- 好物推荐:notion想同步什么东西,直接在这里写就可以,不用再发消息,真棒
- Windows 8系统平台上应用软件安装心得
- Pytorch(6)-设置随机种子,复现模型结果
- (八)mybatis之映射器
- 2018年全国多校算法寒假训练营练习比赛(第一场)D. N阶汉诺塔变形(找规律)
- oracle中ccuser,oracle数据库user profile设置方法
- 1v1项目实战+真实经验倾囊相授,0基础的我是如何逆袭成功?
- 【计量经济学导论】09. 协整与误差修正模型
- web手机服务器系统,web手机服务器系统
- 0LL或0x0UL是什么意思?
- 安卓预装软件卸载教程
- matlab中ode指令,在Matlab中使用ODE选择步长
- 注销consul节点
- 作为学科的计算机科学(COMPUTING AS A DISCIPLINE)
- 源享科技为什么关闭了_关闭这个阀门竟然需要转8000圈?
- Linux经典练习题
- dxc 1.0 多线程详解
- Sitadel :Web安全扫描工具