平时我们做springboot项目的上传文件功能,上传文件的时候大部分都是将文件上传到本地服务器,这里我将实现把文件上传到云服务器
实现所需要用到的工具
1.云服务器,当然可以用虚拟机代替,将文件上传的位置,这边使用的是阿里云服务器;
2. Xshell,用于远程连接控制,也可以用来测试是否能够连接远程服务器,最重要的是能在上面安装宝塔面板,可以对远程服务器进行傻瓜式 *** 作;
3. 宝塔面板,通过Xshell安装,当然如果熟悉linux命令的话,不安装也可以,不过我这边是安装上去了,主要是真的很方便;
4. IDEA,这个就不用多说了,Java开发基本都要用到的;
5. Apifox,这个是用来发送请求的,当然用postman也是可以的,省去自己编写前端代码;
1.开放端口号
你需要在云服务器那边将对应安全组的端口号打开,需要打开的端口号有下面这些20,21,39000-40000(linux系统),3000-4000(windows系统),22,80,443,3306,888
2.连接服务器
你需要Xshell连接到你的云服务器,连接成功后下面这样
3.安装宝塔面板
将下面的指令输入到Xshell命令行,即可进行安装
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
安装完成后会得到一个网站和用户名密码,登进去就能显示宝塔面板
其实我并不是很想写部署安装这些内容,这部分安装很多地方都有教程,如果你不能来到这一步的话,我这边推荐一个狂神的视频教程
服务器购买及宝塔部署环境说明
4.安装配置ftp
有了宝塔面板后这个就相当简单了
首先要在软件商城安装PureFtpd
然后在FTP界面上建立一个Ftp用户
5.这边尝试连接一下服务器
使用Xshell先将之前的连接断开
输入命令 :$ ftp ip地址
出现这个就说明我们能进来了,我们用这个用户上传的文件保存在下面的服务器目录
1.导入ftp依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
2.Ftp工具类
public class FtpUtil {
//服务器IP
private static final String FTP_ADDRESS = "这边放你的服务器ip";
//端口号
private static final int FTP_PORT = 21;
//用户名
private static final String FTP_USERNAME = "admin";
//密码
private static final String FTP_PASSWORD = "123456";
public static boolean uploadFile(String fileName, InputStream inputStream) throws IOException {
boolean flag = false;
FTPClient ftp = new FTPClient();
try{
//连接服务器
int reply;
ftp.connect(FTP_ADDRESS,FTP_PORT);
ftp.login(FTP_USERNAME,FTP_PASSWORD);
reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return false;
}
//上传文件到服务器
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
ftp.storeFile(fileName,inputStream);
inputStream.close();
ftp.logout();
flag = true;
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
ftp.disconnect();
}
}
return flag;
}
}
3.编写后端接口
/**
* 文件上传到远程服务器
* @param file 要上传的文件
* @return 上传的状态
* @throws IOException
*/
@PostMapping("/uploacFile")
@ResponseBody
public String uploacFile(@RequestParam("file")MultipartFile file) throws IOException {
//形成文件流
final InputStream inputStream = file.getInputStream();
//获取文件名
final String fileName = file.getOriginalFilename();
//截取后缀
final String suffix = fileName.substring(fileName.lastIndexOf("."));
//为文件命名
final String finalName = UUID.randomUUID() + suffix;
boolean flag = FtpUtil.uploadFile(finalName,inputStream);
return "状态码"+flag;
}
使用Apifox上传文件
这边要使用post请求,并将文件放到请求体中
运行结果
这边顺便提一下,如果想要用虚拟机实现功能的朋友也是可以使用springboot的代码的,主要还是连接服务器配置会麻烦一些,。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)