在android中上传文件时,文件长度始终为0

时间:2016-05-04 12:34:14

标签: java android file

在下面的代码中,file.length()总是给出0.我在我的Android应用程序中从uploader获取文件。我也设置了所有文件权限和Internet权限,但仍无法获取文件的长度,因此无法转换为Base64并将其传递给我的webserive,使用Base64_decode对其进行解码并将文件保存在文件夹中。

try {
    Uri uri = data.getData();
    Log.d("mypath",uri+"");
    File file = new File(uri.getPath());
    Log.d("Tn1",file.length()+"");
    //int size = Integer.parseInt(String.valueOf(file.length()/1024));
    int size = (int)file.length();
    byte[] bytes = new byte[size];
    //byte[] bytes = loadFile(file);
    Log.d("mysize",size+"Pr");
    String encode = Base64.encodeBytes(bytes);
    //Log.d("Tn2",encode);
    String fileExtension
    = MimeTypeMap.getFileExtensionFromUrl(uri.toString());
    Log.d("Tn",fileExtension);
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
    int indexStart = mimeType.indexOf("/");
    mimeType = mimeType.substring(indexStart+1);
    Log.d("minePrakhar", mimeType);
    if(mimeType.equalsIgnoreCase("doc") 
        || mimeType.equalsIgnoreCase("pdf") 
        || mimeType.equalsIgnoreCase("msexcel") 
        || mimeType.equalsIgnoreCase("vnd.openxmlformats-officedocument.wordprocessingml.document") 
        || mimeType.equalsIgnoreCase("vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
    {
        new RetrieveFeedTask(encode, mimeType, file.getName()).execute();
        db.storeMessage(to_id, from_id + "", file.getName() + "", "file", localTime, "F", "ST", "R", "");
        chatItems.clear();
        dataFromDB();
    }else{
        Toast.makeText(TestChat.this, "File Format is not Supported1", Toast.LENGTH_SHORT).show();
    }
}catch (Exception e)`enter code here`{
    Log.e("minePrakhar123",e.getMessage());
    Toast.makeText(TestChat.this, "File Format is not Supported2", Toast.LENGTH_SHORT).show();
} 

0 个答案:

没有答案