2012-07-22 10 views
6

以下は、テキスト文書を作成してFTPサーバーにアップロードするコードです。何らかの理由で動作しないようです。私は、FTPサーバと通信するためのアンドロイド携帯からFTPサーバーにファイルをアップロードしていますか?

http://lavalatwork.blogspot.tw/2010/09/using-apache-commons-ftp-library-in.html

で提供されるライブラリを使用しました。

try 
    { 
     final String testString = new String("Hello"); 
     FileOutputStream fOut = openFileOutput("samplefile.txt", 
       MODE_WORLD_READABLE); 
     OutputStreamWriter osw = new OutputStreamWriter(fOut); 

     osw.write(testString); 
     osw.flush(); 
     osw.close(); 
    } 


    catch(IOException ex) 
    { 

    } 


    FTPClient mFTP = new FTPClient(); 
    try { 
     // Connect to FTP Server 
     mFTP.connect("192.168.10.101"); 
     //mFTP.login("user", "password"); 
     mFTP.setFileType(FTP.BINARY_FILE_TYPE); 
     mFTP.enterLocalPassiveMode(); 

     // Prepare file to be uploaded to FTP Server 
     File file = new File(getFileStreamPath("samplefile.txt")+ ""); 
     FileInputStream ifile = new FileInputStream(file); 

     // Upload file to FTP Server 
     mFTP.storeFile("filetotranfer",ifile); 
     mFTP.disconnect();   
    } catch (SocketException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

助けてください。

+0

は、多くの場合、非常に便利ですApache Commons FTPクライアントを使用している場合 –

+1

正確に動作しないものについては明示してください。そしてあなたのlogcatを投稿してください。 –

答えて

15

これを参照してください......これは、コード内のprobsを修正するのに役立ちます。私はこれを見...アップロードし、サーバとオーディオファイルをダウンロードするためにApacheのコモンズライブラリを使用していた

...

アップロード:

public void goforIt(){ 


     FTPClient con = null; 

     try 
     { 
      con = new FTPClient(); 
      con.connect("192.168.2.57"); 

      if (con.login("Administrator", "KUjWbk")) 
      { 
       con.enterLocalPassiveMode(); // important! 
       con.setFileType(FTP.BINARY_FILE_TYPE); 
       String data = "/sdcard/vivekm4a.m4a"; 

       FileInputStream in = new FileInputStream(new File(data)); 
       boolean result = con.storeFile("/vivekm4a.m4a", in); 
       in.close(); 
       if (result) Log.v("upload result", "succeeded"); 
       con.logout(); 
       con.disconnect(); 
      } 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 






    } 

ダウンロード:

public void goforIt(){ 
    FTPClient con = null; 

    try 
    { 
     con = new FTPClient(); 
     con.connect("192.168.2.57"); 

     if (con.login("Administrator", "KUjWbk")) 
     { 
      con.enterLocalPassiveMode(); // important! 
      con.setFileType(FTP.BINARY_FILE_TYPE); 
      String data = "/sdcard/vivekm4a.m4a"; 

      OutputStream out = new FileOutputStream(new File(data)); 
      boolean result = con.retrieveFile("vivekm4a.m4a", out); 
      out.close(); 
      if (result) Log.v("download result", "succeeded"); 
      con.logout(); 
      con.disconnect(); 
     } 
    } 
    catch (Exception e) 
    { 
     Log.v("download result","failed"); 
     e.printStackTrace(); 
    } 



} 
3

Simple Java FTP Clientとプロジェクトの外部のjarファイルとして追加し、あなたもまた、あなたはこのlinkに集中することができます詳細については、Apache commons-net-ftpライブラリを使用することができ、このlink

public class FileUpload 
{ 

    /** 
    * Upload a file to a FTP server. A FTP URL is generated with the 
    * following syntax: 
    * ftp://user:[email protected]:port/filePath;type=i. 
    * 
    * @param ftpServer , FTP server address (optional port ':portNumber'). 
    * @param user , Optional user name to login. 
    * @param password , Optional password for user. 
    * @param fileName , Destination file name on FTP server (with optional 
    *   preceding relative path, e.g. "myDir/myFile.txt"). 
    * @param source , Source file to upload. 
    * @throws MalformedURLException, IOException on error. 
    */ 
    public void upload(String ftpServer, String user, String password, 
     String fileName, File source) throws MalformedURLException, 
     IOException 
    { 
     if (ftpServer != null && fileName != null && source != null) 
     { 
     StringBuffer sb = new StringBuffer("ftp://"); 
     // check for authentication else assume its anonymous access. 
     if (user != null && password != null) 
     { 
      sb.append(user); 
      sb.append(':'); 
      sb.append(password); 
      sb.append('@'); 
     } 
     sb.append(ftpServer); 
     sb.append('/'); 
     sb.append(fileName); 
     /* 
      * type ==> a=ASCII mode, i=image (binary) mode, d= file directory 
      * listing 
      */ 
     sb.append(";type=i"); 

     BufferedInputStream bis = null; 
     BufferedOutputStream bos = null; 
     try 
     { 
      URL url = new URL(sb.toString()); 
      URLConnection urlc = url.openConnection(); 

      bos = new BufferedOutputStream(urlc.getOutputStream()); 
      bis = new BufferedInputStream(new FileInputStream(source)); 

      int i; 
      // read byte by byte until end of stream 
      while ((i = bis.read()) != -1) 
      { 
       bos.write(i); 
      } 
     } 
     finally 
     { 
      if (bis != null) 
       try 
       { 
        bis.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
      if (bos != null) 
       try 
       { 
        bos.close(); 
       } 
       catch (IOException ioe) 
       { 
        ioe.printStackTrace(); 
       } 
     } 
     } 
     else 
     { 
     System.out.println("Input not available."); 
     } 
    } 

を参照することができます。ここで

import org.apache.commons.net.ftp.FTPClient; 

FTPClient ftpClient = new FTPClient(); 

try { 
    ftpClient.connect(InetAddress.getByName(SERVER)); 
    ftpClient.login(USERNAME, PASSWORD); 
    ftpClient.changeWorkingDirectory(PATH); 

    if (ftpClient.getReplyString().contains("250")) { 
     ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); 
     BufferedInputStream buffIn = null; 
     buffIn = new BufferedInputStream(new FileInputStream(FULL_PATH_TO_LOCAL_FILE)); 
     ftpClient.enterLocalPassiveMode(); 
     ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressHandler); 

     boolean result = ftpClient.storeFile(localAsset.getFileName(), progressInput); 
     buffIn.close(); 
     ftpClient.logout(); 
     ftpClient.disconnect(); 
    } 

} catch (SocketException e) { 
    Log.e(SorensonApplication.TAG, e.getStackTrace().toString()); 
} catch (UnknownHostException e) { 
    Log.e(SorensonApplication.TAG, e.getStackTrace().toString()); 
} catch (IOException e) { 
    Log.e(SorensonApplication.TAG, e.getStackTrace().toString()); 
} 
0

は、コードブロックです:

private class UploadFile extends AsyncTask<String, Integer, Boolean> { 

    @Override 
    protected Boolean doInBackground(String... params) { 
     FTPClient client = new FTPClient(); 
     try { 
      client.connect(params[1], PORT); 
      client.login(params[2], params[3]); 
      client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE); 
      return client.storeFile(filename, new FileInputStream(new File(
        params[0]))); 

     } catch (Exception e) { 
      Log.d("FTP", e.toString()); 
      return false; 
     } 
    } 

    @Override 
    protected void onPostExecute(Boolean sucess) { 
     if (sucess) 
      Toast.makeText(activity, "File Sent", Toast.LENGTH_LONG).show(); 
     else 
      Toast.makeText(activity, "Error", Toast.LENGTH_LONG).show(); 
    } 

} 

ドライブの下からFTPサーバーにファイルをアップロードするための完全な作業プロジェクトを取得してください。 logcatの出力を確認する

FTPへのファイルのアップロードがPORT 21、FTPでファイルをアップロードする 必要なパラメータを使用します。..

ホスト名 ユーザ名 パスワード

https://drive.google.com/file/d/0B80LBJs3JkaDYUNfZ3pDSkVJUDA/edit

+0

ありがとう@FelixSFD私は私の答えを編集しましたplsこれを見てください。今はいいですか? – Krrish

関連する問題