2016-05-12 3 views
0

画像とファイルをDropBoxにアップロードしたい場合は正常ですが、アップロードした画像とファイルをDropBoxから開くと開くことはありません。それはオープン失敗を示しています。どうすればこの問題を解決できますか?私のコードは次のようになります。アップロードされた画像とファイルがドロップボックスで開かない

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); 
      } 
     } 
    } 
} 

答えて

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

三番目のパラメータはファイルの長さではなく、パスの長さでなければなりません。アップロードされたファイルのサイズを確認すると、それはほんの数バイト(長さがPathであれ)であることがわかります。

私はこのような何かがうまくいくかもしれないと思う:

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

はどうもありがとうございました、それはこれがあなたのために働いている場合 –

+0

ようこそSO @Komalは、[この答えを受け入れる]を検討してくださいするには私のための作業だ(のhttp://メタ.stackexchange.com/questions/5234/how-does-accepting-an-an-answer-work)を参照してください。これはコミュニティにとって大きな助けになります。 – m00am

関連する問題