urlconnection没有将文件上传到ftp服务器

时间:2013-07-05 10:06:29

标签: java android ftp android-edittext urlconnection

你好我正在开发一个Android应用程序,它具有上传文件到ftp服务器的功能我希望我的应用程序上传一个Html文件到ftp服务器我使用这个代码--- 请回答。提前完成了... 这里是代码..只有主要代码..

 new Thread(new Runnable() {

            @Override
            public void run() {


                    String host = "www.ethicstrain.tk";
                    String user = "user";
                    String pass = "pass";
                    String filePath = Environment.getExternalStorageDirectory()+"index.htm";
                    String uploadPath = "public_html/"+str+"/index.htm"; // str is input from editText.
                    String filename = "index.html";





                    StringBuffer sb = new StringBuffer( "ftp://" );


                       sb.append( user );
                       sb.append( ':' );
                       sb.append( pass);
                       sb.append( '@' );

                    sb.append( server );
                    sb.append( '/' );
                    sb.append( str );
                    sb.append( '/');
                    sb.append(filename);


                    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(filePath ) );

                       int i;
                       // read byte by byte until end of stream
                       while ((i = bis.read()) != -1)
                       {
                          bos.write( i );
                       }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    finally
                    {
                       if (bis != null)
                          try
                          {
                             bis.close();
                          }
                          catch (IOException ioe)
                          {
                             ioe.printStackTrace();
                          }
                       if (bos != null)
                          try
                          {
                             bos.close();
                          }
                          catch (IOException ioe)
                          {
                             ioe.printStackTrace();
                          }
                    }
                 }




        }).start();

和Logcat:

07-05 09:46:28.055: W/System.err(1123): java.io.IOException: Unable to connect to server: null
07-05 09:46:28.055: W/System.err(1123):     at libcore.net.url.FtpURLConnection.connect(FtpURLConnection.java:203)
07-05 09:46:28.055: W/System.err(1123):     at libcore.net.url.FtpURLConnection.getOutputStream(FtpURLConnection.java:339)
07-05 09:46:28.065: W/System.err(1123):     at dolphin.developers.com.facebook1$DownloadFileFromURL$3.run(facebook1.java:382)
07-05 09:46:28.065: W/System.err(1123):     at java.lang.Thread.run(Thread.java:856)

2 个答案:

答案 0 :(得分:0)

这一行是什么:

sb.append( server );

服务器变量来自何处。如果它没有设置比你将得到一个例外。我想你是从教程中复制它而忘了改变它。你应该使用你的主机变量但不使用'www。'

哦,刚刚注意到logcat sais:

07-05 09:46:28.065: W/System.err(1123):     at dolphin.developers.com.facebook1$DownloadFileFromURL$3.run(facebook1.java:382)

您是否尝试访问Facebook,是否在您尚未显示的其他地方发生错误?

答案 1 :(得分:0)

尝试将此行sb.append( server );更改为sb.append(host);

此外,用户和密码 - 它们是您尝试访问的ftp服务器的真实用户名和密码吗?

而且,您如何使用filePath和uploadPath?对于您的信息,您没有将它们添加到StringBuilder对象。

使用像这样的硬编码网址尝试下载 -

 URL url = new URL( "ftp://youruser:yourpass@www.ethicstrain.tk/yourfile");
 URLConnection urlc = url.openConnection();

查看此文章以获取有关其工作原理的更多帮助 - click here

希望这有帮助。