java ftp 远程写文件_java上传下载支持ftp远程及本地目录(一)

背景

上传资源图片,默认只可上传至服务器所有在机器目录。现需要增加ftp上传、下载功能

设计

首先考虑尽可能封装实现,即无论上传至本地或者FTP远程目录,都应该在调用层无感知

伪代码调用:

//上传单个文件

FileUpload.upload(MultipartFile file, String fileName);

//上传文件夹文件

FileUpload.uploadImgFile(String spath, String desPath)

//下载图片

FileUpload.downloadImg(String fileName, HttpServletResponse response);

//现在文件夹图片

FileUpload.downloadImgFile(String path);

考虑采用简单工厂及链式实现,如下

FileUpload.create().upload(xxx,xxx);

工厂create构造方法

public class FileUpload {

//创建工厂实例,通过create方法建造

public static IUpload create() {

if (FtpUpload.getEnable()) { //如果启用远程ftp上传

return new FtpUpload();

} else { //项目磁盘上传

return new LocalUpload();

}

}

//禁止外部new

private FileUpload(){};

}

初始考虑IUpload 为接口,但是考虑到本地【LocalUpload】无须实现download功能,本地资源可通过路由控制,所以最好能提供默认实现,幸好jdk1.8提供了接口默认方法实现。

public interface IUpload {

boolean upload(MultipartFile file, String fileName) throws IOException;

default void downloadImg(String fileName,HttpServletResponse response) throws IOException{

throw new IOException("暂未实现");

};

default void downloadImgFile(String path) throws IOException{

throw new IOException("暂未实现");

};

void uploadImgFile(String spath,String desPath) throws IOException;

}

本地代码类实现

public class LocalUpload implements IUpload {

@Override

public boolean upload(MultipartFile file, String destName) throws IOException {

File dest = new File(destName);

// 如果文件父目录不存在,则创建

if (!dest.getParentFile().exists()) {

dest.getParentFile().mkdirs();

}

file.transferTo(dest);

return true;

}

@Override

public void uploadImgFile(String spath, String desPath) throws IOException {

FileUtils.copyDirectory(new File(spath), new File(desPath));

}

}

下面一章,重点讲解通过ftp实现上传、下载及遇到的问题

【特此声明:本文原创,禁止转载!觉得有用打赏一个吧】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值