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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java中ftp文件上传和中文乱码解决

發布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中ftp文件上传和中文乱码解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

前幾天 有個需求就是上傳文件的時候,本地存一份,其他服務器也保存一份,于是就研究了一下,功能只實現了上傳文件不能上傳文件夾,

這里主要用到了 ftp服務器軟件 網上有很多我用的是 serv-u,操作比較簡單很容易像我這樣的小菜使用

服務器下載地址

點擊打開鏈接? ? ? ? ? ?絕對安全無病毒

實現類代碼

[java]?view plain?copy
  • <pre?code_snippet_id="244843"?snippet_file_name="blog_20140319_4_6086968"?name="code"?class="java">package?com.core.haction;??
  • ??
  • import?java.io.File;??
  • import?java.io.FileInputStream;??
  • import?java.io.IOException;??
  • import?java.io.PrintWriter;??
  • import?org.apache.commons.net.ftp.FTPClient;??
  • import?org.apache.commons.net.ftp.FTPReply;??
  • import?com.core.action.BaseAction;??
  • ??
  • public?class?ShangChuanFtp?extends?BaseAction<Model>?{??
  • ??
  • ????public?ShangChuanFtp()?{??
  • ????????super(Model.class);??
  • ????????//?TODO?Auto-generated?constructor?stub??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*/??
  • ????private?static?final?long?serialVersionUID?=?1L;??
  • ????private?FTPClient?ftp;??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@param?path?
  • ?????*????????????上傳到ftp服務器哪個路徑下?
  • ?????*?@param?addr?
  • ?????*????????????地址?
  • ?????*?@param?port?
  • ?????*????????????端口號?
  • ?????*?@param?username?
  • ?????*????????????用戶名?
  • ?????*?@param?password?
  • ?????*????????????密碼?
  • ?????*?@return?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????private?boolean?connect(String?path,?String?addr,?int?port,??
  • ????????????String?username,?String?password)?throws?Exception?{??
  • ????????boolean?result?=?false;??
  • ????????ftp?=?new?FTPClient();??
  • ????????int?reply;??
  • ????????ftp.connect(addr,?port);//連接ftp服務器??
  • ????????ftp.login(username,?password);//登錄ftp??
  • ????????ftp.setFileType(FTPClient.BINARY_FILE_TYPE);??
  • ????????reply?=?ftp.getReplyCode();??
  • ????????if?(!FTPReply.isPositiveCompletion(reply))?{??
  • ????????????ftp.disconnect();??
  • ????????????return?result;??
  • ????????}??
  • ????????ftp.changeWorkingDirectory(path);??
  • ????????result?=?true;??
  • ????????return?result;??
  • ????}??
  • ??
  • ????/**?
  • ?????*??
  • ?????*?@param?file?
  • ?????*????????????上傳的文件或文件夾?
  • ?????*?????????????
  • ?????*????????????代碼我是從網上找的,在使用過程中出現了,中文文件名稱不能上傳,后來自己改變了一下編碼?
  • ?????*?@throws?Exception?
  • ?????*/??
  • ????private?void?upload(File?file)?throws?Exception?{??
  • ????????if?(file.isDirectory())?{??
  • ????????????//?System.out.println(file.isDirectory()+"\n"+file.getName());??
  • ????????????ftp.makeDirectory(new?String(file.getName().getBytes("utf-8"),"8859_1"));//給文件名轉換編碼??
  • ????????????//System.out.println(file.getName());??
  • ????????????ftp.changeWorkingDirectory(new?String(file.getName().getBytes("utf-8"),"8859_1"));??
  • ????????????String[]?files?=?file.list();??
  • ????????????for?(int?i?=?0;?i?<?files.length;?i++)?{??
  • ????????????????File?file1?=?new?File(file.getPath()?+?"\\"?+?files[i]);??
  • ????????????????if?(file1.isDirectory())?{??
  • ????????????????????upload(file1);??
  • ????????????????????ftp.changeToParentDirectory();??
  • ????????????????}?else?{??
  • ????????????????????File?file2?=?new?File(file.getPath()?+?"\\"?+?files[i]);??
  • ????????????????????FileInputStream?input?=?new?FileInputStream(file2);??
  • ????????????????????ftp.storeFile(new?String(file2.getName().getBytes("utf-8"),"8859_1"),?input);??
  • ????????????????????input.close();??
  • ????????????????}??
  • ????????????}??
  • ????????}?else?{??
  • ????????????File?file2?=?new?File(file.getPath());??
  • ????????????System.out.println(file2.getName());??
  • ????????????FileInputStream?input?=?new?FileInputStream(file2);??
  • ????????????ftp.storeFile(new?String(file2.getName().getBytes("utf-8"),"8859_1"),?input);??
  • ????????????input.close();??
  • ????????}??
  • ????}??
  • ??
  • ????//?public?static?void?main(String[]?args)?throws?Exception{//本地測試方法??
  • ????//?ShangChuanFtp?t?=?new?ShangChuanFtp();??
  • ????//?t.connect("",?"遠程服務器的Ip地址",?21,?"ftp的登錄名",?"ftp的登錄密碼");??
  • ????//?File?file?=?new?File("d:\\webapps");//要上傳的文件地址??
  • ????//?t.upload(file);??
  • ????//?System.out.println("上傳完成");??
  • ????//?}??
  • ????/**?
  • ?????*??
  • ?????*?@param?file?
  • ?????*??????????以下代碼,住web頁面用的,strut2的語法大家應該都會知道???
  • ?????*?@throws?IOException?
  • ?????*/??
  • ????private?File?pphoto;??
  • ????private?String?pphotoFileName;??
  • ????private?String?pphotoFileContentType;??
  • ????private?static?final?String?filePath?=?"/while/photo";//上傳文件到本地服務器的路徑??
  • ????private?String?textfield;??
  • ??
  • ????public?String?scftp()?throws?IOException?{??
  • ????????PrintWriter?out?=?getResponse().getWriter();??
  • ??????????
  • ????????try?{??
  • ??????????????
  • ????????????String?fileUrl?=?null;??
  • ????????????if?(pphoto?!=?null)?{??
  • ????????????????//自己封裝的上傳本地服務器的方法fileUrl是方法的返回值我這里是返回的文件名稱??
  • ????????????????fileUrl?=?this.saveFile(pphoto,?pphotoFileName,?filePath,false);??
  • ????????????????System.out.println("3:"?+?this.getSession().getAttribute("dir"));??
  • ????????????????//t.connect("",?"遠程服務器的Ip地址",?21,?"ftp的登錄名",?"ftp的登錄密碼");21是端口號??
  • ????????????????connect("",?"000.000.000.000",?21,?"",?"");??
  • ????????????????//this.getSession().getAttribute("dir")這個是獲取的上傳到本地服務器的路徑,用了個懶辦法,在上傳方法我存到session里面,這邊獲取的??
  • ????????????????//fileUrl是你上傳的那個文件名??
  • ????????????????File?file?=?new?File(this.getSession().getAttribute("dir")+"/"+fileUrl);??
  • ????????????????upload(file);??
  • ????????????}?else?{??
  • ????????????????out.print("0");??
  • ????????????}??
  • ??????????????
  • ??
  • ????????}?catch?(Exception?e)?{??
  • ????????????//?TODO?Auto-generated?catch?block${ctx?}/json/scftp.action??
  • ????????????System.out.println(e.getMessage());??
  • ????????}??
  • ??
  • ????????out.print("1");??
  • ????????return?null;??
  • ????}??
  • ??
  • ????public?String?getTextfield()?{??
  • ????????return?textfield;??
  • ????}??
  • ??
  • ????public?void?setTextfield(String?textfield)?{??
  • ????????this.textfield?=?textfield;??
  • ????}??
  • ??
  • ????public?File?getPphoto()?{??
  • ????????return?pphoto;??
  • ????}??
  • ??
  • ????public?void?setPphoto(File?pphoto)?{??
  • ????????this.pphoto?=?pphoto;??
  • ????}??
  • ??
  • ????public?String?getPphotoFileName()?{??
  • ????????return?pphotoFileName;??
  • ????}??
  • ??
  • ????public?void?setPphotoFileName(String?pphotoFileName)?{??
  • ????????this.pphotoFileName?=?pphotoFileName;??
  • ????}??
  • ??
  • ????public?String?getPphotoFileContentType()?{??
  • ????????return?pphotoFileContentType;??
  • ????}??
  • ??
  • ????public?void?setPphotoFileContentType(String?pphotoFileContentType)?{??
  • ????????this.pphotoFileContentType?=?pphotoFileContentType;??
  • ????}??
  • ??
  • }
  • ?

    總結

    以上是生活随笔為你收集整理的java中ftp文件上传和中文乱码解决的全部內容,希望文章能夠幫你解決所遇到的問題。

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