本章介绍
由于后台同事无法在.net上接收我的文件传输,所以他让我用ftp上传文件
本博客讲一下Flutter用ftp上传文件
有没有.net告诉我,你们到底能不能接收file流
插件介绍
ftpconnect
插件功能
- 将文件上传到FTP
- 从FTP下载文件/目录
- 列出FTP目录的内容
- 管理FTP文件(重命名/删除)
- 管理文件压缩/解压缩
- 完全异步函数
插件地址
引入插件
打开Flutter项目的pubspec.yaml引入依赖,最新版本号请查看插件官网
ftpconnect: ^0.2.1
文件上传
让后台提供,Ftp服务的ip、端口、账号、密码
如果端口是21,则不用填写,默认是21端口
try {
FTPConnect ftpConnect = FTPConnect(
"ftp地址或域名",
user:"ftp账号",
pass: "ftp密码",
debug: true,//是否开启日志打印
port: 21,//端口号,如果默认是21则不用填写
);
var connect = await ftpConnect.connect();//利用填写好的ip密码等链接ftp服务器,链接返回值是一个bool值,true代表链接成功
if (!connect) {//如果链接失败则提示,WeToast是Flutter的一个ui框架,自行换成自己的toast代码就可以
WeToast.info(context)("Ftp服务器链接失败!");
return;
}
var state = await ftpConnect.uploadFile(
files[0],//path对象
sRemoteName: "", //在服务器上保存的名称
);//如果上传成功返回true,失败则是false
print(state);
await ftpConnect.disconnect();//最后关闭ftp连接
} catch (e) {
print(e);
} finally {
//省略
}
我们发现上边代码虽然能成功上传,但是并没有设置路径的地方,比如我想上传的目录不是跟目录,那要怎么做呢?
上传路径
下方代码中有一个sRemoteName传值,我们知道这是文件名称,如果要上传的路径不是跟目录,那么就要改变sRemoteName
var state = await ftpConnect.uploadFile(
files[0],//path对象
sRemoteName: "", //在服务器上保存的名称
);//如果上传成功返回true,失败则是false
var state = await ftpConnect.uploadFile(
files[0],//path对象
sRemoteName: "路径1/路径2/文件名称.后缀", //在服务器上保存的路径+名称
);//如果上传成功返回true,失败则是false
通过以上代码就可以完成指定路径上传
网友评论