iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring框架实现文件上传功能
  • 769
分享到

Spring框架实现文件上传功能

spring文件上传实现文件 2023-05-30 21:05:57 769人浏览 安东尼
摘要

在Java中实现文件的上传有多种方式,如smartUpload或是使用Strus2,本文与大家分享使用spring框架中的MultipartFile类来实例文件的上传。不啰嗦了,直接上干货。先是编写了一个实现文件上传的类FileUpload

在Java中实现文件的上传有多种方式,如smartUpload或是使用Strus2,本文与大家分享使用spring框架中的MultipartFile类来实例文件的上传。

不啰嗦了,直接上干货。先是编写了一个实现文件上传的类FileUploadingUtil,此类中定义了两个对外公开的方法,upload和getFileMap。

前者需要传入一个Map参数,是用户提交的表单中的文件列表,最终返回值的也是一个Map类型对象,其键名为上传的文件名称,键值为文件在服务器上的存储路径;后者主要是用于测试用途,非主要功能,看官可以忽略此方法。

package com.emerson.cwms.utils;  import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry;  import org.springframework.WEB.multipart.MultipartFile;   public class FileUploadingUtil {       public static String FILEDIR = null;       public static Map<String, String> upload(Map<String, MultipartFile> files) throws IOException {     File file = new File(FILEDIR);     if (!file.exists()) {       file.mkdir();     }      Map<String, String> result = new HashMap<String, String>();     Iterator<Entry<String, MultipartFile>> iter = files.entrySet().iterator();     while (iter.hasNext()) {       MultipartFile aFile = iter.next().getValue();       if (aFile.getSize() != 0 && !"".equals(aFile.getName())) {         result.put(aFile.getOriginalFilename(), uploadFile(aFile));       }     }     return result;   }       private static String uploadFile(MultipartFile aFile) throws IOException {     String filePath = initFilePath(aFile.getOriginalFilename());     try {       write(aFile.getInputStream(), new FileOutputStream(filePath));     } catch (FileNotFoundException e) {       logger.error("上传的文件: " + aFile.getName() + " 不存在!!");       e.printStackTrace();     }     return filePath;   }       private static void write(InputStream in, OutputStream out) throws IOException {     try {       byte[] buffer = new byte[1024];       int bytesRead = -1;       while ((bytesRead = in.read(buffer)) != -1) {         out.write(buffer, 0, bytesRead);       }       out.flush();     } finally {       try {         in.close();         out.close();       } catch (IOException ex) {       }     }   }       public static Map<String, String> getFileMap() {     logger.info(FileUploadingUtil.FILEDIR);     Map<String, String> map = new HashMap<String, String>();     File[] files = new File(FileUploadingUtil.FILEDIR).listFiles();     if (files != null) {       for (File file : files) {         if (file.isDirectory()) {           File[] files2 = file.listFiles();           if (files2 != null) {             for (File file2 : files2) {               String name = file2.getName();               logger.info(file2.getParentFile().getAbsolutePath());               logger.info(file2.getAbsolutePath());               map.put(file2.getParentFile().getName() + "/" + name,                   name.substring(name.lastIndexOf("_") + 1));             }           }         }       }     }     return map;   }       private static String initFilePath(String name) {     String dir = getFileDir(name) + "";     File file = new File(FILEDIR + dir);     if (!file.exists()) {       file.mkdir();     }     Long num = new Date().getTime();     Double d = Math.random() * num;     return (file.getPath() + "/" + num + d.longValue() + "_" + name).replaceAll(" ", "-");   }       private static int getFileDir(String name) {     return name.hashCode() & 0xf;   } } 

--结束END--

本文标题: Spring框架实现文件上传功能

本文链接: https://www.lsjlt.com/news/221309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql毫秒时间戳转时间怎么实现
    在MySQL中,可以使用FROM_UNIXTIME()函数将毫秒时间戳转换为时间。需要注意的是,FROM_UNIXTIME()函数接...
    99+
    2024-05-14
    mysql
  • mysql创建序列的方法是什么
    MySQL并没有内置的序列功能,但可以通过创建一个表来模拟序列的功能。以下是一种创建序列的方法: 创建一个表来存储序列的当前值: ...
    99+
    2024-05-14
    mysql
  • mysql怎么修改自增列的初始值
    要修改MySQL表中自增列的初始值,可以使用ALTER TABLE语句。以下是一个示例: ALTER TABLE table_nam...
    99+
    2024-05-14
    mysql
  • MySQL如何设置自增初始值
    在MySQL中,可以使用AUTO_INCREMENT关键字来设置自增初始值。可以使用以下语法来设置自增初始值: ALTER TABL...
    99+
    2024-05-14
    mysql
  • oracle怎么设置主键自增
    在Oracle数据库中,可以通过序列(Sequence)和触发器(Trigger)来实现设置主键自增的功能。 首先,需要创建一个序列...
    99+
    2024-05-14
    oracle
  • pgsql删除索引的方法是什么
    要删除一个索引,可以使用以下SQL语句: DROP INDEX index_name; 其中index_name是要删除的索引的名...
    99+
    2024-05-14
    pgsql
  • db2表空间状态0x4000怎么解决
    表空间状态0x4000表示该表空间为“冻结”状态,这可能是由于一些异常情况导致的。要解决这个问题,可以尝试以下几种方法: ...
    99+
    2024-05-14
    db2
  • mysql大文本字段优化的方法是什么
    在MySQL中,大文本字段(如TEXT、BLOB类型)的优化方法有以下几种: 使用合适的数据类型:根据实际需求选择合适的数据类型...
    99+
    2024-05-14
    mysql
  • oracle更改字符集的方法是什么
    要更改Oracle数据库的字符集,可以通过以下步骤来实现: 确保在更改字符集之前备份数据库,以防发生意外情况。 确定当前数据...
    99+
    2024-05-14
    oracle
  • 怎么更改oracle数据库字符集
    要更改Oracle数据库的字符集,可以按照以下步骤操作: 确保备份数据:在进行字符集更改之前,务必备份数据库以防止数据丢失。 ...
    99+
    2024-05-14
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作