zeeshan
zeeshan

Reputation: 251

Display image in android with spaces in filename from online

I need to display an image in my android application. The problem is I want to get this image from somewhere online. The URL is like:

http://www.mydomain.com/hello world image.png

As you see the image name containing some spaces in it. Every time I execute my code this will show me exception of FileNotFound. and nothing happens.

Following is my code

String imagePathCon = "hello world image.png";      
String imagePath = "http://www.mydomain.com/" + imagePathCon;
try {
  URL url;
  url = new URL(imagePath);

  // url = new URL("http://www.azuma-kinba.com/wp-content/uploads/2012/05/Android-Make-Google-Loss-in-2010.png");

  InputStream content = (InputStream)url.getContent();
  Drawable d = Drawable.createFromStream(content , "src"); 
  im.setImageDrawable(d);

 } catch (MalformedURLException e) {
            e.printStackTrace();
 } catch (IOException e) {
            e.printStackTrace();
 }

I use to replace space with "+" but nothing happens.

Upvotes: 1

Views: 2513

Answers (4)

user1092042
user1092042

Reputation: 1295

You can also use an http get request: The simplest way is to simply call URLEncoder which will automatically replace all charaters in your string to the url encoded format.

HttpParams httpParameters = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParameters, 30000); 
HttpConnectionParams.setSoTimeout(httpParameters, 30000);
HttpClient httpclient = new DefaultHttpClient(httpParameters); 
HttpGet httpGet = new HttpGet(URLEncoder.encode(url, "UTF-8"));
HttpResponse httpResponse = httpclient.execute(httpGet); 
in = httpResponse.getEntity().getContent(); 
//Bitmap bmp = BitmapFactory.decodeStream(instream); 
//create a bitmap or an image from the input stream

Upvotes: 0

This will work.

String imagePathCon = "hello world image.png";   
imagePathCon=imagePathCon.replaceAll(" ", "%20");

String imagePath = "http://www.mydomain.com/" + imagePathCon;

You must know http://en.wikipedia.org/wiki/Percent-encoding#Character_data

Upvotes: 3

SRam
SRam

Reputation: 2828

plese use correct Url for getting image and use below code that would definetly help u...

replace space of URL using...

  imagePath=imagePath.replaceAll(" ", "%20");

and now...

         HttpGet httpRequest = new HttpGet(new URL(params[0]).toURI());
         HttpClient httpClient = new DefaultHttpClient();
         HttpResponse response = (HttpResponse) httpClient.execute(httpRequest);
         HttpEntity entity = response.getEntity();
         BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity); 
             InputStream is = bufHttpEntity.getContent();
        //image_value = new URL("image Url is here");
            bm = BitmapFactory.decodeStream(new FlushedInputStream(is));
    //imageLoader is object of iamge view
           imageLoader.setImageBitmap(bm);

Upvotes: 3

Matt Wolfe
Matt Wolfe

Reputation: 9284

You need to url encode the path, like this:

String imagePathCon = URLEncoder.encode("hello world image.png", "UTF-8");

Upvotes: 0

Related Questions