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

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

通过SpringBoot对阿里云服务器实现文件上传 配置服务器SpringBoot代码使用Apifox上传文件

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/927466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存