当前位置:网站首页>基于FTP协议的文件上传与下载
基于FTP协议的文件上传与下载
2022-08-08 05:58:00 【[email protected]】
一、什么是FTP?
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:下载(Download)和上传(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
二、FTP服务器

使用ftp服务器进行文件传输前,要先对ftp权限进行设置

网页界面如下:

Java连接FTP服务器需要导入jar包

三、上传
package com.apesource.demo;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class Upload {
public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
// 创建文件输入流,用于读取本地的文件
try (FileInputStream localIn = new FileInputStream("E:\\test\\run\\yy1.jpg")) {
// step1:连接服务器
ftpClient.connect("192.168.254.159",21);
// step2:登录
ftpClient.login("qmy", "qmy");
// step3:操作
// 切换至指定位置
boolean isChange = ftpClient.changeWorkingDirectory("qmy");
System.out.println("切换工作目录1:"+isChange);
if(!isChange) {
ftpClient.makeDirectory("qmy");
isChange = ftpClient.changeWorkingDirectory("qmy");
}
System.out.println("切换工作目录2:"+isChange);
// 存储文件(将本地文件上传至ftp服务器
// 参数1:ftp服务器的存储位置(目录+文件夹)
// 参数2:本地的文件输入流
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);// 存储前设置文件类型
ftpClient.storeFile("dir01/stu/qmy.jpg", localIn);// 存储
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果:
上传结果
四、下载
package com.apesource.demo;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
public class Download {
public static void main(String[] args) {
String downloadFileName = "yy1.jpg";
FTPClient ftpClient = new FTPClient();
try (FileOutputStream out = new FileOutputStream("E:\\test\\run\\qmy\\"+downloadFileName)) {
ftpClient.connect("192.168.254.159",21);
ftpClient.login("qmy", "qmy");
ftpClient.changeWorkingDirectory("qmy");// 切换目录
// 下载文件(获取FTP服务器指定目录(qmy)的文件
// 参数1:服务器指定文件
// 参数2:本地输出流(负责下载后写入)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
boolean isRetrieve = ftpClient.retrieveFile(downloadFileName, out);
System.out.println("下载成功?"+isRetrieve);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}运行结果:
下载结果:

版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_49194330/article/details/126198023
边栏推荐
猜你喜欢

【微信小程序】一文学懂小程序的数据绑定和事件绑定

14. Unity2D horizontal version particle system special effects: blood particles + high landing particles + object pool to manage all particles

Matlab simulation of photovoltaic mppt maximum power control based on disturbance observation method

仿记事本;QFile

convolutional neural network image recognition, convolutional neural network image processing

Horizontal version of the generated image uniapp H5 signature

flex布局缺点

Session and cookie usage

如何批量导入文件,并全部自定义重命名为相同文件名

Typescript 命名空间
随机推荐
自动化工具
仿QQ好友列表,QListWidget!
MySQL5
Cs software UI building methods
Typescript namespace
Basic tools - NETCAT (Telnet - banner, transfer text message)
Matlab simulation of photovoltaic mppt maximum power control based on disturbance observation method
如何批量导入文件,并全部自定义重命名为相同文件名
Postman显示验证码图片(base64字符串)
人体神经元细胞分布图片,神经元人体分布大图
神经网络参数量和计算量,神经网络是参数模型吗
std::thread创建线程,使用std::ref()传递类对象参数
APISIX Ingress v1.5-rc1 released
数字IC设计笔试题汇总(四):一些基础知识点
字符串哈希 哈希值
Integer block sample
Several postman features worth collecting will help you do more with less!
Rust development - Struct usage example
整数分块例题
How to batch import files and rename them all to the same file name