2010-08-07 161 views
1

我确实上传了一个文本文件从C盘到使用java代码的服务器.. 我在android中包含相同的代码并执行。但我无法上传文件。在Android上传文件到服务器

我得到这些警告在目录下载:

>08-07 17:39:12.360: WARN/System.err(32030): java.io.IOException: Unable to connect to server: Unable to retrieve file: 550 
>08-07 17:39:12.391: WARN/System.err(32030):  at org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:203) 
>08-07 17:39:12.401: WARN/System.err(32030):  at org.apache.harmony.luni.internal.net.www.protocol.ftp.FtpURLConnection.getOutputStream(FtpURLConnection.java:344) 
>08-07 17:39:12.411: WARN/System.err(32030):  at f.t.p.Upload.upload_file(Upload.java:26) 
>08-07 17:39:12.431: WARN/System.err(32030):  at f.t.p.FTP.onCreate(FTP.java:24) 
>08-07 17:39:12.445: WARN/System.err(32030):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
>08-07 17:39:12.450: WARN/System.err(32030):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
>08-07 17:39:12.460: WARN/System.err(32030):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
>08-07 17:39:12.460: WARN/System.err(32030):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
>08-07 17:39:12.510: WARN/System.err(32030):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
>08-07 17:39:12.520: WARN/System.err(32030):  at android.os.Handler.dispatchMessage(Handler.java:99) 
>08-07 17:39:12.530: WARN/System.err(32030):  at android.os.Looper.loop(Looper.java:123) 
>08-07 17:39:12.530: WARN/System.err(32030):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
>08-07 17:39:12.530: WARN/System.err(32030):  at java.lang.reflect.Method.invokeNative(Native Method) 
>08-07 17:39:12.540: WARN/System.err(32030):  at java.lang.reflect.Method.invoke(Method.java:521) 
>08-07 17:39:12.551: WARN/System.err(32030):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
>08-07 17:39:12.571: WARN/System.err(32030):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
>08-07 17:39:12.580: WARN/System.err(32030):  at dalvik.system.NativeStart.main(Native Method) 

我改变了对的FileInputStream和/sdcard/test.txt给出。互联网,.WRITE_EXTERNAL_STORAGE权限在AndroidManifest.xml

使用: ftp://user:[email protected]/test.txt;type=i“作为url连接。

我不明白为什么代码在android中不起作用Java的。我是否需要为android添加任何额外的代码?

请帮我...谢谢... :)

这里是代码..

public class Upload { 

    public static void upload_file() throws MalformedURLException, IOException{ 


     BufferedInputStream bis = null; 
     BufferedOutputStream bos = null; 
     try 
     { 

      URL url = new URL("ftp://user:[email protected]/test.txt;type=i"); 

      URLConnection urlc = url.openConnection(); 

      System.out.println("COnnection established:"); 

       bos = (BufferedOutputStream) urlc.getOutputStream(); 

       bis = new BufferedInputStream(new FileInputStream("/sdcard/test.txt")); 
        byte[] readData = new byte[1024]; 
        int length; 
        while((length=bis.read(readData))>0) { 
        bos.write(readData); 
        } 
        bis.close(); 
        bos.flush(); 
        bos.close(); 
     }catch(IllegalStateException ise){ System.out.println("Illegal state exception for setUseCaches.."); } 
     finally 
     { 
      if (bis != null) 
       try{ 
        bis.close(); 
        System.out.println("closed bis"); 
       } 
       catch (IOException ioe){} 
      if (bos != null) 
       try{ 
        bos.close(); 
        System.out.println("closed bos"); 
       }catch (IOException ioe){     
        System.out.println("Exception, not finally.."); 
       } 
     } 
     } 
} 
+0

如果您要我添加代码,请告诉我,我也会添加该代码。为什么没有人回答这个问题。 :) – 2010-08-09 06:20:40

回答

1

删除:

;type=i 

来自:

URL url = new URL("ftp://user:[email protected]/test.txt;type=i"); 

它适用于我的应用程序,我刚解决它。

0

某些手机设备不支持FPT协议。 应该使用http上传文件而不是fpt。

如果你想上传一个文件到你的服务器。您应该使用WCF REST服务。 目前,我仍然不知道如何处理WCF REST服务,但我认为这是可能的。

0

如果您喜欢使用URLConnection,则需要禁用输入流。例如:

URLConnection urlc = url.openConnection(); 
    urlc.setDoInput(false); 
    urlc.setDoOutput(true);