使用nginx一分钟配置一个文件服务器(附:阿里oss文件服务使用、fastDFS文件服务使用).md
使用nginx一分钟配置一个文件服务器(附:阿里oss文件服务使用、fastDFS文件服务使用)
[toc]
- 前言:作为一名Java工程师,文件服务用的也不少。从最早的fastDFS轻量级图片服务器到第三方如阿里OSS;七牛云存储都用过。 新公司里一方面没有linux服务器,无法搭建fastDFS文件服务器。当然也没有打算买第三方存储。所以,之前使用过的文件服务器都无效。
- 新的考虑:在windows上搭建文件服务器
- 解决:nginx作为文件服务器,指定目录存放文件。利用java文件流写入指定文件并返回文件路径。
一、配置nginx
- 打开nginx配置目录,找到nginx.config文件编辑
1
2
3
4
5
6
7
8location /file {
alias Z:\file/;
#如果目录在download下则强制浏览器下载
if ($request_filename ~* ^.*?\/download\/.*$){
add_header Content-Disposition: 'attachment;';
}
autoindex on;
}
二、在所配置路径上放入一个文件。重启nginx尝试访问文件服务器
- 重启nginx
- 浏览器访问
http://localhost:80/file/
,实际访问地址按照自己配置路径访问 - 看到如下目录,文件服务器配置完成
三、附加Java上传文件并返回文件访问路径(Spring Boot)
- yml配置
nginxFilePath: Z:\file/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29//Controller 其中modelName是想将文件放入的文件夹(不存在时自动生成)
@PostMapping("/uploadToNginx")
public String uploadToNginx(@RequestParam("file") MultipartFile file,String modelName) {
if (file==null){
return "文件上传失败,请重新选择文件";
}
return fileManageService.uploadToNginx(file,modelName);
}
//Service
String uploadToNginx(MultipartFile file, String modelName);
//ServiceImpl
@Override
public String uploadToNginx(MultipartFile file, String modelName) {
try {
String path=modelName+ "/"+ IdUtil.simpleUUID() +"-"+file.getOriginalFilename();
File test = new File(nginxFilePath+path);
if (!test.exists()){
test.mkdirs();
}
file.transferTo(test);
InetAddress address = InetAddress.getLocalHost();
String ip=address.getHostAddress();
String finalPath="http://"+ip+"/file/"+path;
return finalPath;
}catch (Exception e){
log.error(file.getOriginalFilename()+"文件上传失败", e);
return file.getOriginalFilename()+"文件上传失败";
}
}
附加文章参考:
使用nginx一分钟配置一个文件服务器(附:阿里oss文件服务使用、fastDFS文件服务使用).md
http://example.com/36393.html