2016-05-12 5 views
0

Ich möchte Bild und Datei zu DropBox hochladen, es funktioniert gut, aber wenn ich das hochgeladene Bild und die Datei von DropBox öffnen, wird es nicht geöffnet. Es zeigt öffnen fehlgeschlagen. Wie kann ich dieses Problem lösen? Mein Code sieht wie folgt aus:Hochgeladenes Bild und Datei nicht in Dropbox öffnen

MainActivity.java 

    public class MainActivity extends AppCompatActivity { 

     private Toolbar toolbar; 
     private FragmentManager fragmentManager = null; 
     private FragmentTransaction fragmentTransaction = null; 
     private DirectoryFragment mDirectoryFragment; 
     private DropboxAPI<AndroidAuthSession> dropbox; 
     private final static String APP_KEY = "APP_KEY"; 
     private final static String APP_SECRET = "APP_SECRET"; 
     private static final int PICKFILE_REQUEST_CODE = 1; 
     private String Path = ""; 
     private int COME_FROM = 0; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET); 
      AndroidAuthSession session = new AndroidAuthSession(appKeys); 
      dropbox = new DropboxAPI<AndroidAuthSession>(session); 
      dropbox.getSession().startOAuth2Authentication(MainActivity.this); 

      toolbar = (Toolbar) findViewById(R.id.tool_bar); 
      toolbar.setTitle("Directory"); 
      setSupportActionBar(toolbar); 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

      fragmentManager = getSupportFragmentManager(); 
      fragmentTransaction = fragmentManager.beginTransaction(); 

      mDirectoryFragment = new DirectoryFragment(); 
      mDirectoryFragment.setDelegate(new DocumentSelectActivityDelegate() { 

      @Override 
      public void startDocumentSelectActivity() { 

      } 

      @Override 
      public void didSelectFiles(DirectoryFragment activity, 
             ArrayList<String> files) {    
       Log.d("Selected Files::::", files.get(0).toString()); 
       Path = files.get(0).toString(); 

       if (!Path.equals("")) { 
        Log.d("Path::::", Path); 
        FileInputStream inputStream = null; 
        try { 
         inputStream = new FileInputStream(Path); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } 
        DropboxAPI.Entry response = null; 
        try { 
         response = dropbox.putFile(Path, inputStream, 
           Path.length(), null, null); 
        } catch (DropboxException e) { 
         e.printStackTrace(); 
        } 
        Toast.makeText(MainActivity.this, Path + " Upload file successfull", 
          Toast.LENGTH_LONG) 
          .show(); 
       } else { 
        Toast.makeText(MainActivity.this, "Picked file failed", 
          Toast.LENGTH_LONG) 
          .show(); 
       } 

      } 

      @Override 
      public void updateToolBarName(String name) { 
       toolbar.setTitle(name); 

      } 
     }); 
     fragmentTransaction.add(R.id.fragment_container, mDirectoryFragment, "" + mDirectoryFragment.toString()); 
     fragmentTransaction.commit(); 

    } 

    @Override 
    protected void onDestroy() { 
     mDirectoryFragment.onFragmentDestroy(); 
     super.onDestroy(); 
    } 

    @Override 
    public void onBackPressed() { 
     if (mDirectoryFragment.onBackPressed_()) { 
      super.onBackPressed(); 
     } 
    } 

    protected void onResume() { 
     super.onResume(); 

     if (dropbox.getSession().authenticationSuccessful()) { 
      try { 
       // Required to complete auth, sets the access token on the session 
       dropbox.getSession().finishAuthentication(); 

       String accessToken = dropbox.getSession().getOAuth2AccessToken(); 
      } catch (IllegalStateException e) { 
       Log.i("DbAuthLog", "Error authenticating", e); 
      } 
     } 
    } 
} 

Antwort

0
response = dropbox.putFile(Path, inputStream, 
    Path.length(), null, null); 

Der dritte Parameter die Länge der Datei sein sollte, nicht die Länge des Weges. Wenn Sie die Größe der hochgeladenen Datei überprüfen, werden Sie feststellen, dass es sich nur um ein paar Bytes handelt (unabhängig von der Länge Path).

Ich denke, so etwas wie dies funktionieren könnte:

response = dropbox.putFile(Path, inputStream, 
    new File(Path).length(), null, null); 
+0

Thank you so viel ist es Arbeit für mich –

+0

Willkommen bei SO @Komal Wenn dies für Sie gearbeitet bitte die [die Annahme dieser Antwort] (http: // meta .stackexchange.com/questions/5234/how-does-akzeptieren-einer-antworten-arbeiten). Dies hilft der Gemeinschaft sehr. – m00am

Verwandte Themen