⑴ 用java寫的FTP上傳文件,上傳到伺服器liunx系統,寫好的存放路徑卻放不進去
這是伺服器許可權制定的時候設置可能有問題,重新設置打開文件的目錄許可權即可。
⑵ 你好,請問你java上傳文件到FTP伺服器為空的問題怎麼解決的
問題描述不夠詳細。把異常也放上來。檢查ftp伺服器是否允許上傳,用戶是否具備寫文件許可權。
⑶ ftp上傳許可權設置,
建議用Serv-U架設FTP伺服器,教程可以看這個「 http://www.pconline.com.cn/pce/soft/lan/fwqrj/10211/109140_1.html」
⑷ java 實現ftp上傳如何創建文件夾
這個功能我也剛寫完,不過我也是得益於同行,現在我也把自己的分享給大家,希望能對大家有所幫助,因為自己的項目不涉及到創建文件夾,也僅作分享,不喜勿噴謝謝!
interface:
packagecom.sunline.bank.ftputil;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importorg.apache.commons.net.ftp.FTPClient;
publicinterfaceIFtpUtils{
/**
*ftp登錄
*@paramhostname主機名
*@paramport埠號
*@paramusername用戶名
*@parampassword密碼
*@return
*/
publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword);
/**
*上穿文件
*@paramhostname主機名
*@paramport埠號
*@paramusername用戶名
*@parampassword密碼
*@paramfpathftp路徑
*@paramlocalpath本地路徑
*@paramfileName文件名
*@return
*/
(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName);
/**
*批量下載文件
*@paramhostname
*@paramport
*@paramusername
*@parampassword
*@paramfpath
*@paramlocalpath
*@paramfileName源文件名
*@paramfilenames需要修改成的文件名
*@return
*/
publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames);
/**
*修改文件名
*@paramlocalpath
*@paramfileName源文件名
*@paramfilenames需要修改的文件名
*/
(Stringlocalpath,StringfileName,Stringfilenames);
/**
*關閉流連接、ftp連接
*@paramftpClient
*@parambufferRead
*@parambuffer
*/
publicvoidcloseFtpConnection(FTPClientftpClient,,BufferedInputStreambuffer);
}
impl:
packagecom.sunline.bank.ftputil;
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importorg.apache.commons.net.ftp.FTPClient;
importorg.apache.commons.net.ftp.FTPFile;
importorg.apache.commons.net.ftp.FTPReply;
importcommon.Logger;
{
privatestaticLoggerlog=Logger.getLogger(FtpUtilsImpl.class);
FTPClientftpClient=null;
Integerreply=null;
@Override
publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword){
ftpClient=newFTPClient();
try{
ftpClient.connect(hostname,port);
ftpClient.login(username,password);
ftpClient.setControlEncoding("utf-8");
reply=ftpClient.getReplyCode();
ftpClient.setDataTimeout(60000);
ftpClient.setConnectTimeout(60000);
//設置文件類型為二進制(避免解壓縮文件失敗)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//開通數據埠傳輸數據,避免阻塞
ftpClient.enterLocalActiveMode();
if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
log.error("連接FTP失敗,用戶名或密碼錯誤");
}else{
log.info("FTP連接成功");
}
}catch(Exceptione){
if(!FTPReply.isPositiveCompletion(reply)){
try{
ftpClient.disconnect();
}catch(IOExceptione1){
log.error("登錄FTP失敗,請檢查FTP相關配置信息是否正確",e1);
}
}
}
returnftpClient;
}
@Override
@SuppressWarnings("resource")
(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName){
booleanflag=false;
ftpClient=loginFtp(hostname,port,username,password);
BufferedInputStreambuffer=null;
try{
buffer=newBufferedInputStream(newFileInputStream(localpath+fileName));
ftpClient.changeWorkingDirectory(fpath);
fileName=newString(fileName.getBytes("utf-8"),ftpClient.DEFAULT_CONTROL_ENCODING);
if(!ftpClient.storeFile(fileName,buffer)){
log.error("上傳失敗");
returnflag;
}
buffer.close();
ftpClient.logout();
flag=true;
returnflag;
}catch(Exceptione){
e.printStackTrace();
}finally{
closeFtpConnection(ftpClient,null,buffer);
log.info("文件上傳成功");
}
returnfalse;
}
@Override
publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames){
ftpClient=loginFtp(hostname,port,username,password);
booleanflag=false;
=null;
if(fpath.startsWith("/")&&fpath.endsWith("/")){
try{
//切換到當前目錄
this.ftpClient.changeWorkingDirectory(fpath);
this.ftpClient.enterLocalActiveMode();
FTPFile[]ftpFiles=this.ftpClient.listFiles();
for(FTPFilefiles:ftpFiles){
if(files.isFile()){
System.out.println("=================="+files.getName());
FilelocalFile=newFile(localpath+"/"+files.getName());
bufferRead=newBufferedOutputStream(newFileOutputStream(localFile));
ftpClient.retrieveFile(files.getName(),bufferRead);
bufferRead.flush();
}
}
ftpClient.logout();
flag=true;
}catch(IOExceptione){
e.printStackTrace();
}finally{
closeFtpConnection(ftpClient,bufferRead,null);
log.info("文件下載成功");
}
}
modifiedLocalFileName(localpath,fileName,filenames);
returnflag;
}
@Override
(Stringlocalpath,StringfileName,Stringfilenames){
Filefile=newFile(localpath);
File[]fileList=file.listFiles();
if(file.exists()){
if(null==fileList||fileList.length==0){
log.error("文件夾是空的");
}else{
for(Filedata:fileList){
Stringorprefix=data.getName().substring(0,data.getName().lastIndexOf("."));
Stringprefix=fileName.substring(0,fileName.lastIndexOf("."));
System.out.println("index==="+orprefix+"prefix==="+prefix);
if(orprefix.contains(prefix)){
booleanf=data.renameTo(newFile(localpath+"/"+filenames));
System.out.println("f============="+f);
}else{
log.error("需要重命名的文件不存在,請檢查。。。");
}
}
}
}
}
@Override
publicvoidcloseFtpConnection(FTPClientftpClient,,BufferedInputStreambuffer){
if(ftpClient.isConnected()){
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=bufferRead){
try{
bufferRead.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(null!=buffer){
try{
buffer.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args)throwsIOException{
Stringhostname="xx.xxx.x.xxx";
Integerport=21;
Stringusername="edwftp";
Stringpassword="edwftp";
Stringfpath="/etl/etldata/back/";
StringlocalPath="C:/Users/Administrator/Desktop/ftp下載/";
StringfileName="test.txt";
Stringfilenames="ok.txt";
FtpUtilsImplftp=newFtpUtilsImpl();
/*ftp.modifiedLocalFileName(localPath,fileName,filenames);*/
ftp.downloadFileList(hostname,port,username,password,fpath,localPath,fileName,filenames);
/*ftp.uploadLocalFilesToFtp(hostname,port,username,password,fpath,localPath,fileName);*/
/*ftp.modifiedLocalFileName(localPath);*/
}
}
⑸ java ftp上傳問題
很遺憾的告訴你不能上傳到ftp,你需要先了解ftp協議,應該用socket就可以連接ftp伺服器,然後發送ftp命令
⑹ java上傳文件到 ftp出550 Permission denied怎麼解決
ftp登錄的用戶沒有寫入的許可權,加上就是了
⑺ 設置FTP特定用戶有上傳新文件的許可權
設置FTP特定用戶有上傳新文件的許可權的具體方法步驟如下:
1,在桌面上右擊「我的電腦」,執行「管理」命令,在「計算機管理」窗口的左窗格中依次展開「系統工具」→「本地用戶和組」目錄,單擊選中「用戶」選項。在右側窗格中單擊右鍵,執行「新用戶」命令。在打開的「新用戶」對話框中填寫用戶名(如hanjiang),並設定密碼。然後取消「用戶下次登錄時需更改密碼」復選框,並勾選「用戶不能更改密碼」和「密碼永不過期」復選框,單擊「創建」按鈕完成該用戶的添加。重復這一過程添加其他用戶,最後單擊「關閉」按鈕即可。
2,為方便對這些用戶的管理,最好將他們放入一個專門的組中。創建一個「FTPUsers」組:在「計算機管理」窗口的目錄樹中單擊選中「組」選項,然後在右側窗格中單擊右鍵,執行「新建組」命令,並將該組命名為「FTPUsers」。接著依次單擊「添加」→「高級」→「立即查找」按鈕,將剛才創建的用戶全部添加進來,最後依次單擊「創建」→「結束」按鈕。
3,因為上述創建的用戶默認隸屬於「Users」組,也就是說他們擁有對大部分資源的瀏覽許可權。為了實現對特定資源的有效管理,需要將這些用戶從「Users」組中刪除。在「計算機管理」窗口的右側窗格中雙擊「Users」選項,用滑鼠拖選所有剛添加的用戶並單擊「刪除」按鈕即可。
⑻ java程序可以成功連接Ftp伺服器,但無法上傳文件,怎麼回事,報錯如下,(已設置連接超時時間200s)
我感覺有倆問題,1、連接地址和帳號不是一回事,你最好不要用域名做連接地址,可以用IP地址;2、你是在不行通過空間服務商進入線上後台,如果還不行就聯系空間商,可能是他們的問題.果是VPS的話好像要開通ftp某些許可權才可以,你只是開通了帳號,能連接,並沒有給ftp上傳下載的許可權,這個我在空間商裡面看過教程的,在這沒網路不讓發連接,你可以在網路搜一下試試,希望能幫助你。
⑼ java代碼 經已連接成功linux ftp伺服器,但是就是上傳不了文件
你是想從伺服器下載文件吧?那應該用retrieveFile(String remote, OutputStream local),而不是storefile啊,自己看看API
http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html
⑽ 如何設置ftp上傳者許可權
ftp不能設置上傳文件的許可權,原因是:
ftp只是將文件流上傳到伺服器上,而文件的讀寫屬性是不包括在內的,他是由您連接的伺服器上的操作系統決定的,例如linux。如果你要設置許可權,只能是通過伺服器的操作系統來設置,而不能通過ftp來設置文件上傳許可權。