日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java通过FTP连接到NAS服务器

發布時間:2023/12/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java通过FTP连接到NAS服务器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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服务器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。