title: open failed: ENOENT (No such file or directory) when uploading an image to a website using POST
body: <p>I saved the Uri String of an image to SQLite as string. I can view the image by creating a view intent for it.</p>
  
  <p>but when I upload the image to the web server using FileBody(new File(theUriFromTheDatabase)) it always saying "open failed: ENOENT (No such file or directory)"</p>
  
  <p>The file's uri is: "/content:/media/external/images/media/667"</p>
  
  <p>Facts:</p>
  
  <ol>
  <li>I'm sure the file is there because I can view it</li>
  <li>I enabled internal storage read/write, external storage read/write permissions</li>
  <li>Using a Galaxy Tab 2 10.1</li>
  <li>It doesn't have an SD card</li>
  <li>Same code works on my Experia Neo V with SD card (is it because it has no SD card?)</li>
  <li>Tried removing the wire before starting the app</li>
  <li>Tethered USB is off</li>
  </ol>
  
  <p>Here is the code:</p>
  
  <pre><code>    protected Void doInBackground(Void... params) {
          // TODO Auto-generated method stub
  
          InspectionsDbController db = new InspectionsDbController(getActivity());
  
          InspectionItemStruct[] ins = db.getInspectionList(((MyApplication)((Activity) mContext).getApplication()).getCurrentInspectionId());
  
          SharedPreferences settings = mContext.getSharedPreferences(MainActivity.PREFS_NAME, 0);
          long userId = settings.getLong("userId", 0);
          String token = settings.getString("token", "");
  
          for (int i = 0; i &lt; ins.length; i++) {
  
  
              HttpClient httpClient = new DefaultHttpClient();
              HttpContext localContext = new BasicHttpContext();
              HttpPost httpPost = new HttpPost("http://webprojectupdates.com/mmp/api/mobile/upload_inspection");
  
  
                  MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
  
                  // add userId
                  try {  
                      entity.addPart("userId", new StringBody(String.valueOf(userId)));
                      entity.addPart("token", new StringBody(String.valueOf(token)));
  
                  } catch (IOException e) {
                      Log.e("MMP","Error in adding token: "+e.getMessage());
                  }
  
  
  
  
                  // add media attachments
                  if(ins[i].image!=null){
  
  
                      //Bitmap image = BitmapFactory.decodeFile(ins[i].image);
  
                      //ByteArrayOutputStream bos = new ByteArrayOutputStream();
                      //image.compress(CompressFormat.JPEG, 75, bos);
                      //byte[] imageData = bos.toByteArray();
                      //ByteArrayBody bab = new ByteArrayBody(imageData,"image/jpg", ins[i].itemId+".jpg");
  
                      //entity.addPart("image", bab);
                      entity.addPart("image", new FileBody(new File (ins[i].image)));
                  }
                  if(ins[i].video!=null){
                      entity.addPart("video", new FileBody(new File (ins[i].video)));
                  }
  
                  // Normal string data
                  try {  
                      entity.addPart("itemId", new StringBody(String.valueOf(ins[i].itemId)));
                      entity.addPart("isExist", new StringBody(String.valueOf(ins[i].itemExists)));
                      if(ins[i].comments!=null)  entity.addPart("comment", new StringBody(String.valueOf(ins[i].comments)));
                      entity.addPart("condition", new StringBody(String.valueOf(ins[i].condition)));
                  } catch (IOException e) {
                      Log.e("MMP","Error in adding inspection data: "+e.getMessage());
                  }
  
                  try { 
                      httpPost.setEntity(entity);
                      HttpResponse response = httpClient.execute(httpPost, localContext);
                      String result = EntityUtils.toString(response.getEntity());
                  } catch (IOException e) {
                      Log.e("MMP","Error in handling result: "+e.getMessage());
                  }
  
  
  
              publishProgress(i+1,ins.length);
          }
          return null;
      }
  </code></pre>