一、在eclipse中直接创建maven项目
二、在pom.xml中添加
<properties>
<!--使用utf-8编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--web -->
<spring.version>4.3.14.RELEASE</spring.version>
<!--数据库相关 -->
<mysql.version>5.1.40</mysql.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- mongodb -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
<!--Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<!--springIOC -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
<!--spring-oxm依赖 -->
<dependency>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-xml</artifactId>
<version>1.4.1</version>
</dependency>
<!--spring-json依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core
</groupId>
<artifactId>jackson-core
</artifactId>
<version>2.7.3
</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.3</version>
</dependency>
<!--<dependency> -->
<!--<groupId>com.fasterxml.jackson.dataformat</groupId> -->
<!--<artifactId>jackson-dataformat-xml</artifactId> -->
<!--<version>2.9.4</version> -->
<!--</dependency> -->
<!--spring-aop依赖 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<!--上传文件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!--mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--C3P0 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!--Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<finalName>项目名</finalName>
</build>
</project>
三、创建class连接mongodb
1、引入jar包
import java.io.File;
import java.util.UUID;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
2、创建main方法
public class GridFSTest {
public static void main(String[] args) throws Exception {
saveFile();
//readFile();
}
}
3、创建第一个静态方法(向mongodb插入文件)
public static void saveFile() throws Exception{
try {
//连接mongodb,本地的ip和mongodb端口号
MongoClient mongoClient = new MongoClient("localhost", 27017);
//连接数据库和集合,集合名可不填,GridFS 会默认创建两个集合(js.files(存储源文件),js.chunks(存储文件块,每块 //256kb,一张图片会被切割为256kb的文件块))
DB db=mongoClient.getDB("数据库名",“集合名”);
//设置存储文件名
String newFileName="photo";
//利用GridFS 管理数据库
GridFS gridFS = new GridFS(db);
//得到文件流
String fileName="111.jpg";
File readFile=new File("E:/"+fileName);
//设置文件UUID防止重复,唯一标记文件
String fileUUIDName= UUID.randomUUID().toString();
//将文件输入流封装到GridFS的文件流
GridFSInputFile gfs = gridFS.createFile(readFile);
//封装UUID
gfs.setId(fileUUIDName);
//封装文件名
gfs.setFilename(fileUUIDName);
//插入数据
gfs.save();
} catch (Exception e) {
e.printStackTrace();
System.out.println("出现错误,文件插入失败");
}
}
4、创建第二个静态方法(从mongodb取文件)
public static void readFile(){
try {
//MongoClient 是mongodb的2.4.1版本之后出现的连接mongo的类
// Mongo mongo=new Mongo();(不建议使用)
MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db=mongo.getDB("smartsite");
GridFS gridFs=null;
gridFs=new GridFS(db);
//创建query方法
// DBObject query=new BasicDBObject();
//查找数据库下fs.files集合所有数据
// List<GridFSDBFile> listfiles=gridFs.find(query);
// GridFSDBFile gridDBFile=listfiles.get(0);
//设置新文件名
String newFileName="photo";
//设置需要查找的id
String id="b3c26e45-a972-4d4a-a475-aff8e8197ceb";
// GridFSDBFile gridDBFile=gridFs.findOne(new ObjectId("5b444f65ae1ff21b6832173a"));
//GridFSDBFile gridDBFile=gridFs.findOne(new ObjectId(id));
//设置查找条件
DBObject query = new BasicDBObject("_id", id);
GridFSDBFile gridDBFile = gridFs.findOne(query);
//设置新文件名
String fileName=(String)gridDBFile.get("filename");
//下载到path文件下
File writeFile=new File("path"+fileName+".jpg");
if(!writeFile.exists()){
writeFile.createNewFile();
}
//写入记录的存储
gridDBFile.writeTo("d:/a.txt");
//文件流输出
gridDBFile.writeTo(writeFile);
} catch (Exception e) {
e.printStackTrace();
}
}
注意:
上传文件需在spring中配置文件解析器
<!-- 文件解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<!--最大上傳長度 9M -->
<value>9437184</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>