Sudheer Mudagond
Sudheer Mudagond

Reputation: 21

Listing files of a folder present in the http server

I have a question related to Http. In android how to list the files of a folder which is in Http server.

I am able to Download file from server. But I want to check files present in a folder. I have explored much about it but could not able to find out the solution. Can anybody suggest me the way to achieve it.

Upvotes: 2

Views: 5439

Answers (3)

ambit
ambit

Reputation: 1119

Server script to get a list of files as a string separated by "-" :

<?php
    $path = realpath('your path\\your folder');
    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
        {
            if (strpos($filename,'.mp3') !== false)
            $filenm=$filenm ."-". basename($filename);
        }
    echo $filenm    
?>

Android code to get string from server and separate the filenames:

try {
            int timeout= 7000;
            HttpPost httppost= null;
            HttpClient httpclient = new DefaultHttpClient();
            httpclient.getParams().setParameter(HttpConnectionParams.CONNECTION_TIMEOUT, timeout);
            httppost = new HttpPost("http://yourserver/getlist.php"); 
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
        }
        catch(Exception e) {
            e.printStackTrace();
        }



        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";

            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            is.close();
            result=sb.toString();   
        }
        catch(Exception e){
            e.printStackTrace();
        }

        for (String getFile: result.split("-")){
            Log.d("abc","String is:" + getFile);
        }

Upvotes: 0

Mark JW
Mark JW

Reputation: 496

You will need a server side script to list the files such as this one in PHP

Place the file in the directory with all the files you want to see, called listfiles.php

<?php
 if ($handle = opendir('.')) {
   while (false !== ($file = readdir($handle))) {
          if ($file != "." && $file != "..") {
            //$thelist = $thelist.$file.'<br>';
            $thelist = $thelist.$file."\r\n";
          }
       }
  closedir($handle);
  }
 echo $thelist;
?>

Then in your android java app, you will download the file, and then build an array of the filenames for your processing.

String serverFile = "path on your server/listfiles.php";
String listOfFiles = DownloadText(serverFile);
String[] linesOfFiles = listOfFiles.split("<br>");

Then you have a string array of all of the files on the server. I have not included the code for the DownloadText function, but that is very standard and you can find it easily. It will download any text file over HTTP.

HTH

Upvotes: 1

iaindownie
iaindownie

Reputation: 1056

Create a web service method on your target server that (in Java) calls something like

File myDir = new File(request.getRealPath("pathToMyDir"));
ArrayList fileArray = new ArrayList(Arrays.asList(myDir.list()));

The 'getRealPath' method is deprecated, but works for me ;-) My files are in a folder within my web application. Your method will need to package up the contents of the ArrayList in a JSON string (as the return).

Then, create a JSON call to this method within Android, and parse the results in the normal way. Plenty of SO tickets describing that mechanism. HTH.

Upvotes: 0

Related Questions