栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

FTP上传文件到服务器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FTP上传文件到服务器

依赖:

依赖:
    
			commons-net
			commons-net
			3.6
		

后端:

@RequestMapping("fileUpload")
    public ApiRest fileUpload(@RequestBody MultipartFile file) throws Exception {
        File filee = MultipartFileToFile.multipartFileToFile(file);
        String time = System.currentTimeMillis()+"";
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);

        //2、删除本地文件
        if (uploadToFtp2(filee,time,suffix)){
            System.out.println("上传至ftp服务器!");
        }else {
            System.out.println("上传至ftp服务器失败!");
        }
        filee.delete();

       return success("http://IP:PORT/exam/img/"+time+"."+suffix);
       
    }

    private boolean uploadToFtp2(File file,String time,String suffix){
        FTPClient ftpClient = new FTPClient();
        try {
            //连接ftp服务器 参数填服务器的ip
            ftpClient.connect("IP",PORT);

            //进行登录 参数分别为账号 密码
            ftpClient.login("xxxx","XXXXXX");

            //改变工作目录(按自己需要是否改变)
            //只能选择local_root下已存在的目录
            String[] imgList = {"jpg","png","gif","jpeg","bmp"};
            String[] videoList = {"mp4","avi"};
            if(Arrays.stream(imgList).anyMatch(body -> suffix.equalsIgnoreCase(body))){
                ftpClient.changeWorkingDirectory("/exam/img/");
            }else if(Arrays.stream(videoList).anyMatch(body -> suffix.equalsIgnoreCase(body))){
                ftpClient.changeWorkingDirectory("/exam/video/");
            }else{
                ftpClient.changeWorkingDirectory("/exam/other/");
            }

            //设置文件类型为二进制文件
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            //开启被动模式(按自己如何配置的ftp服务器来决定是否开启)
            ftpClient.enterLocalPassiveMode();
            String server_path = time+"."+suffix;
            long c = System.currentTimeMillis();
            InputStream input = new FileInputStream(file);
            OutputStream out = ftpClient.storeFileStream(server_path);
            byte[] byteArray = new byte[4096];
            int read = 0;
            while((read = input.read(byteArray)) != -1){
                out.write(byteArray,0, read);
            }
            out.close();
            input.close();
            file.delete();
            long b = System.currentTimeMillis();
            System.out.println("上传用时: "+(b-c)+"ms");

        } catch (IOException e) {
            e.printStackTrace();
            return false;

        }
        return true;
    }
文件转换工具类
public class MultipartFileToFile {

    
    public static File multipartFileToFile(MultipartFile file) throws Exception {

        File toFile = null;
        if (file.equals("") || file.getSize() <= 0) {
            file = null;
        } else {
            InputStream ins = null;
            ins = file.getInputStream();
            toFile = new File(file.getOriginalFilename());
            inputStreamToFile(ins, toFile);
            ins.close();
        }
        return toFile;
    }

    //获取流文件
    private static void inputStreamToFile(InputStream ins, File file) {
        try {
            OutputStream os = new FileOutputStream(file);
            int bytesRead = 0;
            byte[] buffer = new byte[8192];
            while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
                os.write(buffer, 0, bytesRead);
            }
            os.close();
            ins.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    
    public static void delteTempFile(File file) {
        if (file != null) {
            File del = new File(file.toURI());
            del.delete();
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号