ftp上傳代碼
以下是cmd的代碼
開始→運行→cmd,在cmd窗口輸入ftp,再輸入「open
123.456.7.89」,之後回車,在下一行輸入用戶名,回車,再輸入密碼,回車。之後再輸入「put
要上傳文件的路徑及文件名
這里可以不輸入,也可以定義ftp的目錄」,回車,如果顯示「226
Transfer
complete」就是成功了,以上我已經試驗過,但雜桌面上的文件卻一直不能成功。
『貳』 php中如何實現ftp上傳基礎代碼
p工具我們都用過是用來上傳文件的,那麼在php中如何用代碼實現呢,下面簡單介紹一個最基礎最簡單的列子,首先根據我們使用ftp工具來說,實現文件上傳需要打開ftp工具->輸入ftp地址,埠號,賬號,密碼登陸ftp->從本地選擇相應文件上傳到ftp相應目錄,php中要實現這么一個簡單的功能無非也是這樣。
第一步:打開ftp
$ip="101.101.101.101";
$name="name";
$pwd="mima";
$con=ftp_connect($ip,"21") or("連接失敗");
第二步:登陸ftp
ftp_login($con,$name,$pwd);
第三步:上傳本地test.php文件到ftp image目錄下
ftp_put($con,"image/test.php","test.php",FTP_ASCII);
此時在ftp上的image目錄下可以看到test.php文件了,當然這里上傳文件,可以擴展下寫個上傳表單,將表單附件上傳ftp這樣就更方便,這里只作為一個文件最基礎上傳ftp功能。
『叄』 ftp上傳出錯,錯誤代碼:200 227 125 550。持續了幾次,最後上傳成功了。 這個問題是什麼原因造成的呢
550 Requested action not taken. File unavailable (e.g., file not found, no access).
請求操作未被執行,文件不可用。
問題出現的原因:
上傳文件的是無法寫入文件,導致找不到文件!
而無法上傳文件,是因為用戶沒有寫入文件的許可權!
由於項目變換了環境,設置環境的文件夾並沒有給予用戶寫入許可權,用戶無法將文件寫入根目錄,這就造成了上傳文件路徑的錯誤。
解決辦法:
這個問題針對我的程序而言是:直接給用戶重新賦予許可權就好,重新檢查一遍上傳路徑,重新跑一跑程序就ok!
首先檢查用戶對應的角色名,然後看路徑設置是否正確,有沒有相關的許可權,如果這些都沒問題,然後就嘗試下面的操作:
重起FTP服務,最好從服務裡面重啟(不能根本解決);
重新設置Server-U帳號和目錄訪問里的文件路徑(如果還不行,嘗試下面操作);
刪除用戶,重新建。
『肆』 c++ FTP上傳文件。
給你個例子
#include <afxinet.h>
void main()
{
BOOL dRes,pRes;
HINTERNET hInternet;
HINTERNET hConnect;
hInternet = InternetOpen("A3GS Sample", INTERNET_OPEN_TYPE_DIRECT,
NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE);
if ( NULL == hInternet )
{
printf("InternetOpen Error:%d\n", GetLastError() );
}
hConnect = InternetConnect(hInternet, "127.0.0.1", INTERNET_DEFAULT_FTP_PORT,
"ww123", "12345", INTERNET_SERVICE_FTP,
INTERNET_FLAG_EXISTING_CONNECT || INTERNET_FLAG_PASSIVE,0 );
if ( NULL == hInternet )
{
printf( "InternetConnect Error:%d\n", GetLastError() );
InternetCloseHandle(hInternet);
}
dRes = FtpGetFile(hConnect, "./wwyy/download/test1.txt", "D:\\BT\\test1.txt", FALSE,
FILE_ATTRIBUTE_ARCHIVE, FTP_TRANSFER_TYPE_UNKNOWN, 0);
if ( dRes == 0 )
{
printf( "FtpGetFile Error:\n", GetLastError() );
}else{
printf( "下載文件成功!\n" );
}
pRes = FtpPutFile(hConnect,"D:\\BT\\hhsj.txt","hhsj.txt",FTP_TRANSFER_TYPE_ASCII,0);
if(pRes==0)
{
printf("上傳文件失敗!\n");
}else{
printf("上傳文件成功!\n");
}
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
if(dRes&&pRes) return true;
else return false;
}
『伍』 怎麼用java實現FTP上傳
sun.net.ftp.FtpClient.,該類庫主要提供了用於建立FTP連接的類。利用這些類的方法,編程人員可以遠程登錄到FTP伺服器,列舉該伺服器上的目錄,設置傳輸協議,以及傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,FtpClient的實例變數保存了有關建立"代理"的各種信息。下面給出了這些實例變數:
public static boolean useFtpProxy
這個變數用於表明FTP傳輸過程中是否使用了一個代理,因此,它實際上是一個標記,此標記若為TRUE,表明使用了一個代理主機。
public static String ftpProxyHost
此變數只有在變數useFtpProxy為TRUE時才有效,用於保存代理主機名。
public static int ftpProxyPort此變數只有在變數useFtpProxy為TRUE時才有效,用於保存代理主機的埠地址。
FtpClient有三種不同形式的構造函數,如下所示:
1、public FtpClient(String hostname,int port)
此構造函數利用給出的主機名和埠號建立一條FTP連接。
2、public FtpClient(String hostname)
此構造函數利用給出的主機名建立一條FTP連接,使用默認埠號。
3、FtpClient()
此構造函數將創建一FtpClient類,但不建立FTP連接。這時,FTP連接可以用openServer方法建立。
一旦建立了類FtpClient,就可以用這個類的方法來打開與FTP伺服器的連接。類ftpClient提供了如下兩個可用於打開與FTP伺服器之間的連接的方法。
public void openServer(String hostname)
這個方法用於建立一條與指定主機上的FTP伺服器的連接,使用默認埠號。
public void openServer(String host,int port)
這個方法用於建立一條與指定主機、指定埠上的FTP伺服器的連接。
打開連接之後,接下來的工作是注冊到FTP伺服器。這時需要利用下面的方法。
public void login(String username,String password)
此方法利用參數username和password登錄到FTP伺服器。使用過Intemet的用戶應該知道,匿名FTP伺服器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。
下面是FtpClient類所提供的一些控制命令。
public void cd(String remoteDirectory):該命令用於把遠程系統上的目錄切換到參數remoteDirectory所指定的目錄。
public void cdUp():該命令用於把遠程系統上的目錄切換到上一級目錄。
public String pwd():該命令可顯示遠程系統上的目錄狀態。
public void binary():該命令可把傳輸格式設置為二進制格式。
public void ascii():該命令可把傳輸協議設置為ASCII碼格式。
public void rename(String string,String string1):該命令可對遠程系統上的目錄或者文件進行重命名操作。
除了上述方法外,類FtpClient還提供了可用於傳遞並檢索目錄清單和文件的若干方法。這些方法返回的是可供讀或寫的輸入、輸出流。下面是其中一些主要的方法。
public TelnetInputStream list()
返回與遠程機器上當前目錄相對應的輸入流。
public TelnetInputStream get(String filename)
獲取遠程機器上的文件filename,藉助TelnetInputStream把該文件傳送到本地。
public TelnetOutputStream put(String filename)
以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算機
package myUtil;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
/**
* ftp上傳,下載
*
* @author why 2009-07-30
*
*/
public class FtpUtil {
private String ip = "";
private String username = "";
private String password = "";
private int port = -1;
private String path = "";
FtpClient ftpClient = null;
OutputStream os = null;
FileInputStream is = null;
public FtpUtil(String serverIP, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
}
public FtpUtil(String serverIP, int port, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
this.port = port;
}
/**
* 連接ftp伺服器
*
* @throws IOException
*/
public boolean connectServer() {
ftpClient = new FtpClient();
try {
if (this.port != -1) {
ftpClient.openServer(this.ip, this.port);
} else {
ftpClient.openServer(this.ip);
}
ftpClient.login(this.username, this.password);
if (this.path.length() != 0) {
ftpClient.cd(this.path);// path是ftp服務下主目錄的子目錄
}
ftpClient.binary();// 用2進制上傳、下載
System.out.println("已登錄到\"" + ftpClient.pwd() + "\"目錄");
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 斷開與ftp伺服器連接
*
* @throws IOException
*/
public boolean closeServer() {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
if (ftpClient != null) {
ftpClient.closeServer();
}
System.out.println("已從伺服器斷開");
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 檢查文件夾在當前目錄下是否存在
*
* @param dir
*@return
*/
private boolean isDirExist(String dir) {
String pwd = "";
try {
pwd = ftpClient.pwd();
ftpClient.cd(dir);
ftpClient.cd(pwd);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 在當前目錄下創建文件夾
*
* @param dir
* @return
* @throws Exception
*/
private boolean createDir(String dir) {
try {
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); // sign
s.countTokens();
String pathName = ftpClient.pwd();
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpClient.sendServer("MKD " + pathName + "\r\n");
} catch (Exception e) {
e = null;
return false;
}
ftpClient.readServerResponse();
}
ftpClient.binary();
return true;
} catch (IOException e1) {
e1.printStackTrace();
return false;
}
}
/**
* ftp上傳 如果伺服器段已存在名為filename的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param filename
* 要上傳的文件(或文件夾)名
* @return
* @throws Exception
*/
public boolean upload(String filename) {
String newname = "";
if (filename.indexOf("/") > -1) {
newname = filename.substring(filename.lastIndexOf("/") + 1);
} else {
newname = filename;
}
return upload(filename, newname);
}
/**
* ftp上傳 如果伺服器段已存在名為newName的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param fileName
* 要上傳的文件(或文件夾)名
* @param newName
* 伺服器段要生成的文件(或文件夾)名
* @return
*/
public boolean upload(String fileName, String newName) {
try {
String savefilename = new String(fileName.getBytes("GBK"),
"GBK");
File file_in = new File(savefilename);// 打開本地待長傳的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if (file_in.isDirectory()) {
upload(file_in.getPath(), newName, ftpClient.pwd());
} else {
uploadFile(file_in.getPath(), newName);
}
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
return false;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 真正用於上傳的方法
*
* @param fileName
* @param newName
* @param path
* @throws Exception
*/
private void upload(String fileName, String newName, String path)
throws Exception {
String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);// 打開本地待長傳的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if (file_in.isDirectory()) {
if (!isDirExist(newName)) {
createDir(newName);
}
ftpClient.cd(newName);
File sourceFile[] = file_in.listFiles();
for (int i = 0; i < sourceFile.length; i++) {
if (!sourceFile[i].exists()) {
continue;
}
if (sourceFile[i].isDirectory()) {
this.upload(sourceFile[i].getPath(), sourceFile[i]
.getName(), path + "/" + newName);
} else {
this.uploadFile(sourceFile[i].getPath(), sourceFile[i]
.getName());
}
}
} else {
uploadFile(file_in.getPath(), newName);
}
ftpClient.cd(path);
}
/**
* upload 上傳文件
*
* @param filename
* 要上傳的文件名
* @param newname
* 上傳後的新文件名
* @return -1 文件不存在 >=0 成功上傳,返迴文件的大小
* @throws Exception
*/
public long uploadFile(String filename, String newname) throws Exception {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = new java.io.File(filename);
if (!file_in.exists())
return -1;
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}
/**
* 從ftp下載文件到本地
*
* @param filename
* 伺服器上的文件名
* @param newfilename
* 本地生成的文件名
* @return
* @throws Exception
*/
public long downloadFile(String filename, String newfilename) {
long result = 0;
TelnetInputStream is = null;
FileOutputStream os = null;
try {
is = ftpClient.get(filename);
java.io.File outfile = new java.io.File(newfilename);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
result = result + c;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 取得相對於當前連接目錄的某個目錄下所有文件列表
*
* @param path
* @return
*/
public List getFileList(String path) {
List list = new ArrayList();
DataInputStream dis;
try {
dis = new DataInputStream(ftpClient.nameList(this.path + path));
String filename = "";
while ((filename = dis.readLine()) != null) {
list.add(filename);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
FtpUtil ftp = new FtpUtil("192.168.11.11", "111", "1111");
ftp.connectServer();
boolean result = ftp.upload("C:/Documents and Settings/ipanel/桌面/java/Hibernate_HQL.docx", "amuse/audioTest/music/Hibernate_HQL.docx");
System.out.println(result ? "上傳成功!" : "上傳失敗!");
ftp.closeServer();
/**
* FTP遠程命令列表 USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASV STOR
* REST CWD STAT RMD XCUP OPTS ACCT TYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
* 在伺服器上執行命令,如果用sendServer來執行遠程命令(不能執行本地FTP命令)的話,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD /test/bb\r\n"); //執行伺服器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer後調用
* nameList("/test")獲取指目錄下的文件列表 XMKD建立目錄,當目錄存在的情況下再次創建目錄時報錯 XRMD刪除目錄
* DELE刪除文件
*/
}
}
『陸』 Android FTP上傳圖片代碼
android客戶端實現FTP文件需要用到 commons-net-3.0.1.jar
先將jar包復制到android libs目錄下
復制以下實現代碼
以下為實現代碼:
/**
*通過ftp上傳文件
*@paramurlftp伺服器地址如:
*@paramport埠如:
*@paramusername登錄名
*@parampassword密碼
*@paramremotePath上到ftp伺服器的磁碟路徑
*@paramfileNamePath要上傳的文件路徑
*@paramfileName要上傳的文件名
*@return
*/
publicStringftpUpload(Stringurl,Stringport,Stringusername,Stringpassword,StringremotePath,StringfileNamePath,StringfileName){
FTPClientftpClient=newFTPClient();
FileInputStreamfis=null;
StringreturnMessage="0";
try{
ftpClient.connect(url,Integer.parseInt(port));
booleanloginResult=ftpClient.login(username,password);
intreturnCode=ftpClient.getReplyCode();
if(loginResult&&FTPReply.isPositiveCompletion(returnCode)){//如果登錄成功
ftpClient.makeDirectory(remotePath);
//設置上傳目錄
ftpClient.changeWorkingDirectory(remotePath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.enterLocalPassiveMode();
fis=newFileInputStream(fileNamePath+fileName);
ftpClient.storeFile(fileName,fis);
returnMessage="1";//上傳成功
}else{//如果登錄失敗
returnMessage="0";
}
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException("FTP客戶端出錯!",e);
}finally{
//IOUtils.closeQuietly(fis);
try{
ftpClient.disconnect();
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException("關閉FTP連接發生異常!",e);
}
}
returnreturnMessage;
}
『柒』 Eclipse如何通過FTP上傳代碼
FTP上傳代碼是需要插件
eclipse 不自帶這功能的
步驟:
1,下載了插件eclipse-FTP-WebDAV-3.1M4,在下面的網址:URL http://mirrors.bevc.net/eclipse/download/drops/S-3.1M4-200412162000/eclipse-FTP-WebDAV-3.1M4.zip
2,檢查你的eclipse是否有老版本的安裝。檢查plugins及features兩個目錄。
將其中的org.eclipse.team.webdav_2.XX 等等與本插件內文件重名但是版本又不同的文件全部刪除。
3,將解開的plugins、features兩個目錄覆蓋你的eclipse安裝目錄對應的目錄。
4,啟動,eclipse,點file->import,打開後,看看有沒有ftp選項,如果有雙擊就可以進行ftp的應用了。
注意:如果你的eclipse里一個工程都沒有的時候是打不開這個窗口的。
還有一點,如果你安裝完插件後,在你的eclipse中並沒有看到插件被裝,有的時候需要更改一下你的eclipse安裝目錄名字,運行一下,再改回來就會好用了。什麼原因不是清楚,好像是eclipse在什麼地方建立緩存設置了。
------------->
安裝了eclipse-FTP-WebDAV-3.2M5.zip 插件,覺得不太好用,速度比較慢。
使用了php的開源框架Prado。這個框架下開發,要求模板文件的名字是.page,有很多自定義的控制項標簽,它只提供了dreamweaver的插件,所以用eclipse和dreamweaver修改同一套文件資源,並用dw的ftp功能上傳到伺服器。伺服器上的文件是從cvs checkout出來的,windows開發機上的同步過來後,eclipse可能自動識別了CVS文件,把它作為一個cvs項目,看起來比較煩。
有時候調試,就直接在伺服器上修改文件,如果剛好在本地也修改了這個文件,cvs操作的時候就會出現沖突。需要找到一個好一些的工具做同步。cuteFtp吧