上传文件MultipartFile类转为File文件不使用临时文件

北山飞天 2017-12-05 03:44:34
CommonsMultipartFile cf= (CommonsMultipartFile)file;
DiskFileItem fi = (DiskFileItem)cf.getFileItem();
File f = fi.getStoreLocation();
上面的方法可以把MultipartFile类型转换为File类型文件,但是转换后的文件是电脑临时文件temp类型,操作起来不方便,有没有方法能不用临时文件的转换方法呢
...全文
3422 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
冰思雨 2021-04-09
看你上传文件的大小了,大文件必须保存到临时文件中再做处理,小文件可以直接处理。 不明白楼主的意思,是想上传的数据直接一步到位存到预定的位置,而不是先存到临时文件,然后再折腾到预定位置,是吗? 如果是这个意思的话,这就简单了。 你这样做,上传的时候,不是会保存到临时文件中吗? 你把临时文件的文件夹设置到预定位置的硬盘分区上面,在同一个分区即可,不需要直接去预定位置,只要在相同分区也建一个存放临时文件的文件夹即可。然后,关键的步骤来了,不需要去预定位置建立文件,然后拷贝数据,而是,直接将临时文件的文件名重新命名即可,直接把临时文件的文件名改成预定位置的文件名,然后就没有数据的移动,已经临时文件的删除等操作了。 为啥一定要有临时文件? 1. 上传的文件太大,多人上传会把内存撑爆; 2. 上传过程被中断,可以断点续传; 3. 没有上传完全的数据文件,没必要进行后续的处理,换句话说,上传过程被中断或者持续传输的过程中,我们一般是不会进行干预的,因为一般情况下干预了也没有什么意义。
  • 打赏
  • 举报
回复 1
qq_41184054 2021-04-07
不想要文件为什么还要用File,直接操作流不就好了吗
  • 打赏
  • 举报
回复
CH_spanky 2021-03-02
楼主找到办法了吗?
  • 打赏
  • 举报
回复
低级攻城狮 2020-07-17
引用 8 楼 低级攻城狮 的回复:
[quote=引用 4 楼 一只三黄鸡 的回复:]文件一般不是上传就是下载,除了表格什么的需要处理,可以使用流的形式
不知道你有没有用,贴个上传的吧
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath + fileName);
out.write(file);
out.flush();
out.close();
}






  • 打赏
  • 举报
回复
低级攻城狮 2020-07-17
引用 4 楼 一只三黄鸡 的回复:
文件一般不是上传就是下载,除了表格什么的需要处理,可以使用流的形式
不知道你有没有用,贴个上传的吧
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath + fileName);
out.write(file);
out.flush();
out.close();
}


引用 7 楼 BlackMirrorD 的回复:
[quote=引用 自己 的回复:]
[/quote那我请问,你 new File干嘛]
File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new Fi

引用 7 楼 BlackMirrorD 的回复:
[quote=引用 自己 的回复:]
[/quote那我请问,你 new File干嘛]

File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new Fi
  • 打赏
  • 举报
回复
quarkape 2020-03-17
[quote=引用 自己 的回复:] [/quote那我请问,你 new File干嘛]
  • 打赏
  • 举报
回复
七加一i 2020-03-17
引用 3 楼 BlackMirrorD 的回复:
[quote=引用 2 楼 七加一i 的回复:] File file = new File(path); FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
我看你是喝醉了[/quote] 然而我就是这样用了
  • 打赏
  • 举报
回复
一只三黄鸡 2020-03-10
FileUtil.uploadFile(file.getBytes(), fileBasePath + filePath, fileName);
  • 打赏
  • 举报
回复
一只三黄鸡 2020-03-10
文件一般不是上传就是下载,除了表格什么的需要处理,可以使用流的形式
不知道你有没有用,贴个上传的吧
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath + fileName);
out.write(file);
out.flush();
out.close();
}
  • 打赏
  • 举报
回复
quarkape 2020-03-09
引用 2 楼 七加一i 的回复:
File file = new File(path); FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
我看你是喝醉了
  • 打赏
  • 举报
回复
七加一i 2019-09-19
File file = new File(path); FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
  • 打赏
  • 举报
回复
北山飞天 2017-12-05
  • 打赏
  • 举报
回复
发帖
Java EE

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
帖子事件
创建了帖子
2017-12-05 03:44
社区公告
暂无公告