【通过SpringBoot对阿里云服务器实现文件上传】

通过SpringBoot对阿里云服务器实现文件上传

平时我们做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地址
在这里插入图片描述
在这里插入图片描述

出现这个就说明我们能进来了,我们用这个用户上传的文件保存在下面的服务器目录
在这里插入图片描述

SpringBoot代码

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的代码的,主要还是连接服务器配置会麻烦一些,。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值