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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java FTP下载文件以及编码问题小结

發布時間:2025/5/22 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java FTP下载文件以及编码问题小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

之前在開發過程中,遇到了一點問題,我要訪問一個FTP服務器去下載文件詳細情況如下:

1. 需要傳入一個可能為中文的文件名;

2. 通過文件名去FTP上尋找該文件;

3. FTP服務器的命名編碼為“GBK”;

思路

1.通過GET方法直接將文件名負載URL后面,但需要通過轉碼;

2.在Java Controller中收到參數后,進行解碼,解碼為正常數據;

3.用正常數據再轉碼為GBK,到Service中去調用FTP即可

4.(因公司安全考慮,我們需要在另一個模塊中調用FTP)通過rest接口將文件名傳出,另一模塊獲取到文件流轉換為byte[]傳回,調用response輸出即可

總結

編碼問題的解決方案:

?

Jquery對URL以及參數轉碼,據我所了解的主要應用encodeURI、encodeURIComponent,例如我需要傳入變量名為fileDepence

var downloadDepence=fileID+"-"+filename; window.location.href=encodeURI(ajaxurl+"/coadownload/downloadFile?fileDepence="+encodeURIComponent(downloadDepence));

這樣我在后臺就可以接收到轉碼過后的fileDepence這個串,通過驗證encodeURIComponent會以“utf-8”進行轉碼,所以我們使用Java對其解碼:

String viewItem=java.net.URLDecoder.decode(fileDepence, "utf-8");

這樣得到的viewItem就與我們原本要傳入的值一致了,如果傳入的為中文文件名,則此時viewItem便是對應的中文文件名了。

之后我又了解一下,通過JS來完成GBK的轉碼比較麻煩,而采用Unicode的Java則比較方法,則同理,我們使用viewItem在以GBK來轉一次碼,就可以得到對應的FTP服務器中的文件名了。

String GBKItem= URLEncoder.encode(viewItem,"GBK");

FTP的解決方法

?

建立一個FTP連接的公用類

public static FtpClient connectFTP(String url, int port, String username, String password) {//創建ftpFtpClient ftp = null;try {//創建地址SocketAddress addr = new InetSocketAddress(url, port);//連接ftp = FtpClient.create();ftp.connect(addr);//登陸 ftp.login(username, password.toCharArray());ftp.setBinaryType();} catch (FtpProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}logger.info("已登錄到FTP服務器!" + new Date());return ftp;}

在另一個模塊的Service中建立一個下載的方法,在rest接口訪問的Controller中調用該方法。

public FileBtye downloadfilefromFTP(String fileDepence,HttpServletResponse response) throws IOException, FtpProtocolException {FileBtye file=new FileBtye(); //FileBtye為一個只包含btye[]的對象,主要用于適合Controller的responsebody的json傳出response.setCharacterEncoding("utf-8"); fileDepence=fileDepence.replace("\"", ""); //rest接口傳輸過來的值需要做一定的格式化處理FtpClient ftpClient= FTPManager.connectFTP(FTPHost, Integer.parseInt(FTPPort), FTPUserName, FTPPassWord); //通過properties文件讀取InputStream is = null;ftpClient.changeDirectory("//filepath"); //文件目錄is = ftpClient.getFileStream(fileDepence); //獲取文件流ByteArrayOutputStream swapStream = new ByteArrayOutputStream();byte[] buff = new byte[100]; //buff用于存放循環讀取的臨時數據int rc = 0;while ((rc = is.read(buff, 0, 100)) > 0) {swapStream.write(buff, 0, rc);}byte[] fileByte = swapStream.toByteArray();file.setFileinfo(fileByte);is.close();return file;}

在本地Service中調用rest接口完成輸出response輸出即可,同時要注意response的設置

       String viewItem=java.net.URLDecoder.decode(fileDepence, "utf-8");//FTP服務器命名規則以GBK編碼String GBKItem= URLEncoder.encode(viewItem,"GBK");
       //調用rest接口,拿到返回的FileBtyeFileBtye downloadStream
=restTemplate.postForObject(gatewayRootUrl + GatewayUrlConstant.COA_DOWNLOAD + GatewayUrlConstant.DOWNLOAD_FILE, GBKItem, FileBtye.class);if(downloadStream!=null){//設置信息頭response.setCharacterEncoding("utf-8"); //設置編碼response.setContentType("multipart/form-data"); //根據文件確定文件格式response.setHeader("Content-Disposition", "attachment;fileName=" + viewItem); //設置文件名ServletOutputStream out;//輸出流輸出out = response.getOutputStream();out.write(downloadStream.getFileinfo());out.flush();out.close();logger.info("下載文件成功" + new Date());}else {logger.info("下載文件不存在" + new Date());}

?

轉載于:https://www.cnblogs.com/rekent/p/7526984.html

總結

以上是生活随笔為你收集整理的Java FTP下载文件以及编码问题小结的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 天堂福利在线 | 国产1区在线观看 | 青青偷拍视频 | 国产又粗又黄视频 | 99国产精品久久久 | 少妇视频一区二区三区 | 性饥渴的农村熟妇 | 欧美日韩视频无码一区二区三 | 久久五月视频 | 狠狠五月天 | 人物动物互动39集免费观看 | 亚洲精品久久久久久无码色欲四季 | 亚洲欧美一区二区三区四区 | 黄色免费网站视频 | 国产成人一区二区三区视频 | 中文字幕在线第一页 | 草久久免费视频 | 阿v天堂在线 | 欧美色妞网 | 播金莲一级淫片aaaaaaa | 中文字幕日韩一级 | 国产伦精品一区二区三区照片 | 日本成人黄色 | 国产1区在线观看 | 小情侣高清国产在线播放 | 亚洲精品无码久久久久 | 欧美日韩国产综合网 | 国产秋霞 | 欧美成人三级精品 | 天堂中文在线8 | 国产精品羞羞答答 | a级免费视频| 91蝌蚪视频在线观看 | 毛片日本 | 国产内射老熟女aaaa∵ | 波多野结衣一本 | 国产高清不卡视频 | 国产专区一区二区 | 乌克兰性极品xxxhd | www.色香蕉| 狠狠干2018 | 看免费毛片 | 亚洲第一综合网 | 亚洲熟女少妇一区二区 | 国产一级淫片免费 | 成人免费公开视频 | 日本在线不卡一区二区 | 一区二区精品视频 | 爱插网 | 猫咪av在线 | 狠狠五月 | 国产精品日日做人人爱 | mm131美女大尺度私密照尤果 | 毛片免费一区二区三区 | 国产精品欧美激情在线播放 | 国产精品国产馆在线真实露脸 | 精品一级少妇久久久久久久 | 中文字幕人妻丝袜二区 | 亚洲人成无码网站久久99热国产 | 中文字幕免费在线看线人 | 日本不卡在线 | 午夜影院体验区 | 999国产精品 | 国产无遮挡一区二区三区毛片日本 | 狠狠综合网 | 一区三区视频 | 蜜桃色999| 日本一区二区色 | 一区二区三区精品免费视频 | 99re视频| 在线观看免费黄网站 | 欧美日韩一区二区在线观看视频 | 成人av日韩 | 精品国产大片大片大片 | 国产精品嫩草69影院 | 欧美日韩国 | 日韩成人在线视频观看 | 成人高潮片免费网站 | 亚洲午夜视频在线观看 | 国产国语老龄妇女a片 | 亚洲高潮 | 精品国产1区 | av私库在线观看 | 久久久久无码精品国产sm果冻 | 亚洲精品免费在线播放 | 女生喷水视频 | 日本亲与子乱人妻hd | 亚洲一级av毛片 | 与子敌伦刺激对白播放的优点 | 艳妇臀荡乳欲伦交换在线看 | 色噜噜av | 欧美日韩综合在线观看 | 99视屏| 日韩欧美大片 | 国产一区二区三区中文字幕 | www.啪啪.com| 毛片在线观看网站 | 亚洲视频在线免费播放 | 国产成人专区 |