1.搭建一个NAS服务器

新手教程:https://post.smzdm.com/p/a3gw7q27/

这篇文章我只进行到第二大步,第三步配置DDNS,安装应用程序,我没有实现,连不上网络。

2.外网访问

在加了一些相关群之后,我了解到了需要如何才能外网访问NAS,也就是第三步。

步骤如下

如上图,公网IP需要给连接网络所在运营商(联通,电信,移动)去申请,这个申请其实还是比较麻烦的,那么就只能是改公网IP,目前我没有找到改公网IP的办法,所以上图中的方式也就不行了。

2.1 使用内网穿透连接NAS

花生壳我就不多介绍了,能玩NAS,肯定也知道花生壳。

花生壳是可以分配一个域名给用户使用的,外网端口一般也是随机生成的。

内网主机:也就是NAS服务器的内网IP,端口为21。

3.设置NAS文件传输器

因为花生壳映射的端口是变化的,通常在10000-30000之间

4.通过FTP连接到NAS服务器。上传文件

import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;import java.io.*;/*** 通过FTP上传文件** @Author lvhaibao* @Date 2018/2/11 21:43*/
public class FTPTools {//用于打印日志private static final Logger log = Logger.getLogger(FTPTools.class);//设置私有不能实例化private FTPTools() {}/*** 上传** @param hostname ip或域名地址* @param port  端口* @param username 用户名* @param password 密码* @param workingPath 服务器的工作目* @param inputStream 要上传文件的输入流* @param saveName    设置上传之后的文件名* @return*/public static boolean upload(String hostname, int port, String username, String password, String workingPath, InputStream inputStream, String saveName) {boolean flag = false;FTPClient ftpClient = new FTPClient();//1 测试连接if (connect(ftpClient, hostname, port, username, password)) {try {//2 检查工作目录是否存在if (ftpClient.changeWorkingDirectory(workingPath)) {// 3 检查是否上传成功if (storeFile(ftpClient, saveName, inputStream)) {flag = true;disconnect(ftpClient);}}} catch (IOException e) {log.error("工作目录不存在");e.printStackTrace();disconnect(ftpClient);}}return flag;}/*** 断开连接** @param ftpClient* @throws Exception*/public static void disconnect(FTPClient ftpClient) {if (ftpClient.isConnected()) {try {ftpClient.disconnect();log.error("已关闭连接");} catch (IOException e) {log.error("没有关闭连接");e.printStackTrace();}}}/*** 测试是否能连接** @param ftpClient* @param hostname  ip或域名地址* @param port      端口* @param username  用户名* @param password  密码* @return 返回真则能连接*/public static boolean connect(FTPClient ftpClient, String hostname, int port, String username, String password) {boolean flag = false;try {//ftp初始化的一些参数ftpClient.connect(hostname, port);ftpClient.enterLocalPassiveMode();ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.setControlEncoding("UTF-8");if (ftpClient.login(username, password)) {log.info("连接ftp成功");flag = true;} else {log.error("连接ftp失败,可能用户名或密码错误");try {disconnect(ftpClient);} catch (Exception e) {e.printStackTrace();}}} catch (IOException e) {log.error("连接失败,可能ip或端口错误");e.printStackTrace();}return flag;}/*** 上传文件** @param ftpClient* @param saveName        全路径。如/home/public/a.txt* @param fileInputStream 要上传的文件流* @return*/public static boolean storeFile(FTPClient ftpClient, String saveName, InputStream fileInputStream) {boolean flag = false;try {if (ftpClient.storeFile(saveName, fileInputStream)) {flag = true;log.error("上传成功");disconnect(ftpClient);}} catch (IOException e) {log.error("上传失败");disconnect(ftpClient);e.printStackTrace();}return flag;}public static void main(String[] args) throws FileNotFoundException {String hostname = "ip";int port = 端口;String username = "nas账户";String password = "nas密码";String workingPath = "/NAS/images/";String str = "C:\\Users\\43834\\Desktop\\1.png";InputStream fileInputStream = new FileInputStream(new File(str));String saveName = "1.png";System.out.println(FTPTools.upload( hostname, port, username, password, workingPath, fileInputStream, saveName));}
}

如果只是内网下使用NAS,那么可以直接输入NAS IP+端口 ,这样速度很快。

外网就需要映射的url+端口了!

java通过FTP连接到NAS服务器相关推荐

  1. Java实现FTP上传到服务器

    简介 FTP是TCP/IP协议组中的协议之一,包括两个组成部分,一是FTP服务端,二是FTP客户端,其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源. ...

  2. java在FTP服务器创建文件夹,java在ftp服务器上创建文件夹

    java在ftp服务器上创建文件夹 内容精选 换一换 启动目的端时失败,错误码:SMS.3103,提示迁移失败原因"对目的服务器重新建立引导失败".启动目的端后,系统会重新安装目的 ...

  3. java ftp 上传文件到服务器,java实现ftp上传文件到服务器

    java实现ftp上传文件到服务器 内容精选 换一换 怎样上传文件到Windows操作系统云服务器?安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ ...

  4. Java实现文件上传到服务器(FTP方式)

    Java实现文件上传到服务器(FTP方式) 1,jar包:commons-net-3.3.jar 2,实现代码: //FTP传输到数据库服务器private boolean uploadServerB ...

  5. java与ftp连接_建立与ftp服务器的连接——完成版(java)

    // ftp 程序Ftp.java // 此程序的功能是建立与ftp服务器的连接并实现文件传输 // 使用方法:java Ftp 服务器地址 //启动示例:java Ftp kiku.fuis.fuk ...

  6. 我的世界java无法连接服务器_java - 无法连接到Minecraft服务器 - SO中文参考 - www.soinside.com...

    当我尝试从此处使用Java从头开始制作的经过稍微修改的Minecraft客户端尝试连接到Minecraft服务器时,出现此错误:Minecraft原始客户端Java代码:Java sending ha ...

  7. javaftp读取服务器文件,java读取ftp服务器文件

    java读取ftp服务器文件 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时上云 ...

  8. ftp读取服务器文件是否存在,java读取ftp服务器文件是否存在

    java读取ftp服务器文件是否存在 内容精选 换一换 弹性云服务器通过SNAT访问公网上服务器,出现TCP建链失败的情况,可通过以下方法进行排查.执行以下命令,查看远端服务器是否开启了"t ...

  9. java ftp文件到服务器配置,Java实现文件上传到服务器(FTP方式)

    Java实现文件上传到服务器(FTP方式) 1,jar包:commons-net-3.3.jar 2,实现代码: //FTP传输到数据库服务器 private boolean uploadServer ...

  10. 直接读取ftp服务器文件,java读取ftp服务器文件

    java读取ftp服务器文件 [2021-02-05 07:08:30]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

最新文章

  1. token拦截器阻止连接_如何防止广告拦截器阻止您的分析数据
  2. pure abstract class(什么是纯抽象类?)
  3. asp.net播放声音
  4. 垃圾收集器与内存分配策略(五)之垃圾日志与常见参数
  5. idea IDE 常用快捷键记录
  6. Java流程控制03 循环结构 While循环 DoWhile循环 For循环 增强型For循环
  7. 微服务升级_SpringCloud Alibaba工作笔记0012---Gateway常用的Filter
  8. 跨浏览器确定一个窗口的大小
  9. 解密亚马逊Ironman计划:背靠AWS云服务发力AI,对抗谷歌微软
  10. tomcat ajp协议安全限制绕过漏洞_Apache tomcat 文件包含漏洞复现(CVE20201938)
  11. linux命令怎么显示文件某一行或几行内容
  12. Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库
  13. 通信原理(第七版)常见公式
  14. 【优秀的截图软件】jietu 2.2.2 for mac
  15. Android聊天软件的开发(一)--预备知识
  16. 葡萄柚能放冰箱保存吗 葡萄柚怎么保存时间长
  17. 个人关于PAT的认识心得和体会
  18. ODU帧转OTU帧流程
  19. 微信网页开发wx.chooseImage多图上传、预览(已解决)
  20. python学习(24) 使用Xpath解析并抓取美女图片

热门文章

  1. 留给19371213看的
  2. ubuntu 14.04 安装搜狗拼音输入法
  3. 支付宝二维码可以抓包更改金额_支付宝到账铃声,金额可以随意改。
  4. ArcGIS Pro功能模块简介
  5. chrome浏览器的devtools详解
  6. 谈谈我是如何选择VC界面皮肤库
  7. cocos creator 接QQ小游戏小程序 AppBox 盒子广告sdk
  8. 亚马逊SP-API对接-网站授权
  9. 时空超分辨论文阅读笔记(一)---- Zooming Slow-Mo
  10. vue3.0组合式api语法使用总结