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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。

前幾天 有個(gè)需求就是上傳文件的時(shí)候,本地存一份,其他服務(wù)器也保存一份,于是就研究了一下,功能只實(shí)現(xiàn)了上傳文件不能上傳文件夾,

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

服務(wù)器下載地址

點(diǎn)擊打開鏈接? ? ? ? ? ?絕對(duì)安全無(wú)病毒

實(shí)現(xiàn)類代碼

[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服務(wù)器哪個(gè)路徑下?
  • ?????*?@param?addr?
  • ?????*????????????地址?
  • ?????*?@param?port?
  • ?????*????????????端口號(hào)?
  • ?????*?@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服務(wù)器??
  • ????????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?
  • ?????*????????????上傳的文件或文件夾?
  • ?????*?????????????
  • ?????*????????????代碼我是從網(wǎng)上找的,在使用過程中出現(xiàn)了,中文文件名稱不能上傳,后來自己改變了一下編碼?
  • ?????*?@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"));//給文件名轉(zhuǎn)換編碼??
  • ????????????//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{//本地測(cè)試方法??
  • ????//?ShangChuanFtp?t?=?new?ShangChuanFtp();??
  • ????//?t.connect("",?"遠(yuǎn)程服務(wù)器的Ip地址",?21,?"ftp的登錄名",?"ftp的登錄密碼");??
  • ????//?File?file?=?new?File("d:\\webapps");//要上傳的文件地址??
  • ????//?t.upload(file);??
  • ????//?System.out.println("上傳完成");??
  • ????//?}??
  • ????/**?
  • ?????*??
  • ?????*?@param?file?
  • ?????*??????????以下代碼,住web頁(yè)面用的,strut2的語(yǔ)法大家應(yīng)該都會(huì)知道???
  • ?????*?@throws?IOException?
  • ?????*/??
  • ????private?File?pphoto;??
  • ????private?String?pphotoFileName;??
  • ????private?String?pphotoFileContentType;??
  • ????private?static?final?String?filePath?=?"/while/photo";//上傳文件到本地服務(wù)器的路徑??
  • ????private?String?textfield;??
  • ??
  • ????public?String?scftp()?throws?IOException?{??
  • ????????PrintWriter?out?=?getResponse().getWriter();??
  • ??????????
  • ????????try?{??
  • ??????????????
  • ????????????String?fileUrl?=?null;??
  • ????????????if?(pphoto?!=?null)?{??
  • ????????????????//自己封裝的上傳本地服務(wù)器的方法fileUrl是方法的返回值我這里是返回的文件名稱??
  • ????????????????fileUrl?=?this.saveFile(pphoto,?pphotoFileName,?filePath,false);??
  • ????????????????System.out.println("3:"?+?this.getSession().getAttribute("dir"));??
  • ????????????????//t.connect("",?"遠(yuǎn)程服務(wù)器的Ip地址",?21,?"ftp的登錄名",?"ftp的登錄密碼");21是端口號(hào)??
  • ????????????????connect("",?"000.000.000.000",?21,?"",?"");??
  • ????????????????//this.getSession().getAttribute("dir")這個(gè)是獲取的上傳到本地服務(wù)器的路徑,用了個(gè)懶辦法,在上傳方法我存到session里面,這邊獲取的??
  • ????????????????//fileUrl是你上傳的那個(gè)文件名??
  • ????????????????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;??
  • ????}??
  • ??
  • }
  • ?

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。