The OSS-Server recommended in this issue is a small object storage system that is provided for project development. Developers can remove services for file upload and facilitate file migration. In order to meet the needs of a single project and multiple systems, unified oss services are provided.
oss-server provides the following functions:
1, upload function
2, file online management function (including file preview, internal upload, delete, rename)
3. Permission management (upload api permission user maintenance, oss-server login system maintenance)
oss-server uses tomcat+nginx, tomcat provides the ability to upload object storage, nginx provides the ability to access online
oss does not provide file related log storage function, is a pure technical middleware
The main configurations of the server (application.properties) are as follows:
# Material store path -- ending with /
material.root=/home/material/
# Material download path root directory, this directory is nginx read directory, can use the domain name
material.invokingRoot=http://192.168. 0.7 < / span > / < / code > < / pre >
Using the above configuration, the server nginx configuration is as follows:
server{
listen 80;
server_name 192.168.0.7;
charset utf-8;
location / {
root /home/material/;
}
}
This configuration is simply to configure the nginx access path,server_name can be a domain name.
oss-server provides the following two submission methods
In this way, the back-end needs to convert the file into a base64 string and submit it to the oss-server. In this way, the oss-server provides the java version of the sdk. For details, see the OSS-server-SDK-Java program
.
< p data – track = “15” > request interface: / oss/material/uploadByBinary < / p >
Interface type: post
Request type: application/json;
{
"project": "",
"files": [
{
"original_name": "test.png",
"file": "File stream base64 string",
"media_type": "png"
}
]
}
Response json
{
"code": "8200",
"message": "Success",
"data": [{
"id": "1a4c705d260647cc9be951ead3a449e6",
"url": "http://192.168.0.7/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg",
"store": "/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg"
}]
}
form Submit the form directly
In this way, the front-end can submit and upload directly through the form, and the back-end does not need to provide transit
Request interface: /oss/material/{project}/uploadMaterial
Interface type: post
{
"code": "8200",
"message": "Success",
"data": [{
"id": "1a4c705d260647cc9be951ead3a449e6",
"url": "http://192.168.0.7/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg",
"store": "/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg"
}]
}
form The following is an example of the form code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<form action="http://192.168.0.7:18000/oss/material/province_III/uploadMaterial" method="post" enctype="multipart/form-data" target="uploadIFrame">
<input type="file" name="file" value="Select File "/>
<input type="submit" value="Submit "/>
</form>
<iframe name="uploadIFrame" style="width: 500px;height: 500px;border: 1px solid gray;"></iframe>
</body>
</html>
Software Architecture
Backend framework: SpringBoot 2.0.2.RELEASE
Back-end module: freemarker
Front end framework: layer+Bootstrap
Installation tutorial
< p data – track = “37” > 1, download the source code: git clone https://gitee.com/xiaoym/oss-server.git < / p >
2, modify the application.properties configuration file, mainly modify the following oss external domain name path has been uploaded storage path
# Material store path -- ending with /
material.root=/home/material/
# Material download path root
material.invokingRoot=http://192.168. 0.7 < / span > / < / code > < / pre >
3, package: mvn package
4, run the jar package: java -jar oss-server-0.0.1-SNAPSHOT.jar