Java实现文件上传(mysql、MongoDB、OSS)

  1. 文件上传

    1.1  Mysql

MySQL中存储文件数据的字段类型为longblob类型,将文件流转成byte数组赋值给实体,然后插入到数据库中

 1     public String uploadFile(MultipartFile upfile) {
 2         AuditFiles file = AuditFiles.FACTORY.create();
 3         file.setFileId(getUUID());
 4         file.setFileName(upfile.getResource().getFilename());
 5         file.setFileSave("F");
 6         file.setFileType(upfile.getContentType());
 7         file.setFileSize((int)upfile.getSize());
 8         try {
 9             file.setContent(toByteArray(upfile.getInputStream()));
10         } catch (IOException e) {
11             // TODO 自动生成的 catch 块
12             e.printStackTrace();
13         }
14         DatabaseUtil.insertEntity("default", file);
15         return file.getFileId();
16     }
17 
18     private byte[] toByteArray(InputStream input) throws IOException {
19         ByteArrayOutputStream output = new ByteArrayOutputStream();
20         byte[] buffer = new byte[1024*4];
21         int n = 0;
22         while (-1 != (n = input.read(buffer))) {
23             output.write(buffer, 0, n);
24         }
25         return output.toByteArray();
26     }

    1.2  MongoDB

MongoDB需要添加对应的pom依赖

1 <dependency>
2         <groupId>org.mongodb</groupId>
3         <artifactId>mongo-java-driver</artifactId>
4         <version>3.12.7</version>
5     </dependency>

MongoDB工具类,获取MongoDB连接信息

 1 public class MongodbUtil {
 2     //获取库的地址
 3     public static String MONGODB_PATH = "";
 4     //库的名称
 5     public static String MONGODB_DBNAME = "";
 6     //schame
 7     public static String MONGODB_NAME = "";
 8     private static MongoClient mongoClient;
 9     
10     static {
11         MongoClientOptions options = MongoClientOptions.builder().sslEnabled(false).maxConnectionIdleTime(3000).build();
12         mongoClient =  new MongoClient(new ServerAddress(MONGODB_PATH,27017),options);
13     }
14     
15     public static MongoDatabase getConnect() {
16         return  mongoClient.getDatabase(MONGODB_DBNAME);
17     }
18     
19     public static DB getDB(){
20         return mongoClient.getDB(MONGODB_DBNAME);
21     }
22 }

文件上传

 1 public String uploadFile(MultipartFile upFile) {
 2         String id = getUUID();
 3         try {
 4             GridFS gridFs = new GridFS(MongodbUtil.getDB(),"files");
 5             GridFSInputFile gridFSInputFile = gridFs.createFile(upFile.getBytes());
 6             gridFSInputFile.setId(id);
 7             gridFSInputFile.setFilename(upFile.getOriginalFilename());
 8             gridFSInputFile.setContentType(upFile.getContentType());
 9             gridFSInputFile.save();
10         } catch (IOException e) {
11             e.printStackTrace();
12         }
13         return id;
14     }

    1.3  OSS文件上传

 1 //    END_POIND,ACCESS_KEY_ID,ACCESS_KEY_SECRET为OSS文件服务器对应的标识(字符串),由文件服务器第三方提供
 2 public String uploadFile(MultipartFile upFile) {
 3         OSS ossClient = null;
 4         String id = getUUID();
 5         try {
 6             log.info("上传文件{}到{}开始", upFile.getOriginalFilename(), id);
 7             ossClient = new OSSClientBuilder().build(END_POIND, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
 8         } catch (Exception e) {
 9             log.error(e.getMessage());
10         } finally {
11             if (ossClient != null) {
12                 ossClient.shutdown();
13             }
14         }
15         return id;
16     }

 

posted @ 2022-07-06 10:42  leviH  阅读(566)  评论(0编辑  收藏  举报