1.首先搭建一个文件服务器,不管你是本地虚拟机镜像创建的服务器,还是买的云服务器,都适用。
1)先去下载一个tomcat的安装包,如果你下不到没关系,我有。
链接:https://pan.baidu.com/s/1Yd7kI3kIN3SuKQsIsEFgtA
提取码:iyvs
2)解压到你想要的文件夹下,修改web.xml文件。搜索到下图所展示的地方
修改成所示代码。然后启动tomcat。
别忘了关闭防护火墙。可以使用nginx做代理,我这里没有做代理,只是开放了端口。不建议这么做,被渗透风险极大。只适用于学习DEMO。
3)在webapp目录下新建个文件夹,我这里叫files,然后访问路径下拼上文件夹
路径,再次访问就会是下面展示的样子:
2.开始准备上传文件的代码
1.新建一个springboot项目
2.除了常规web依赖 ,还需引入以下依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>
3.直接贴工具类
public class UploadUtil {
private static ChannelSftp sftp = null;
/**
* Description: 向FTP服务器上传文件
* @param filename 上传到FTP服务器上的文件名
* @param input 输入流
* @return 成功返回true,否则返回false
*/
public static boolean uploadFile(String filename, InputStream input) {
boolean result = false;
FTPClient ftp = new FTPClient();
File file = null;
try {
JSch jsch = new JSch();
//获取sshSession 账号-ip-端口
Session sshSession = jsch.getSession(服务器用户名, 服务器IP, 端口号);
//添加密码
sshSession.setPassword(服务器密码);
Properties sshConfig = new Properties();
//严格主机密钥检查
sshConfig.put("StrictHostKeyChecking", "no");
sshSession.setConfig(sshConfig);
//开启sshSession链接
sshSession.connect();
//获取sftp通道
Channel channel = sshSession.openChannel("sftp");
//开启
channel.connect();
sftp = (ChannelSftp) channel;
//服务器路径
file = new File("/usr/local/tomcat/apache-tomcat-9.0.39/webapps/files/");
//设置为被动模式
ftp.enterLocalPassiveMode();
//设置上传文件的类型为二进制类型
//进入到要上传的目录 然后上传文件
sftp.cd("/usr/local/tomcat/apache-tomcat-9.0.39/webapps/files/");
sftp.put(input, filename);
input.close();
result = true;
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return result;
}
}
InputStream哪来的 ,参数类型是MultipartFile,file.getInputStream()
fileName 哪来的 ,file.getOriginalFilename();
有问题 评论区指教