你好我正在开发一个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)
答案 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
希望这有帮助。