2013-03-06 4 views
0

Я пытаюсь загрузить фотографию в Flickr, но этот код бросает исключение из файла, который не найден. Изображение находится в папке, но я не знаю, почему Android бросает исключение. Пожалуйста помоги.Как получить доступ к пути к изображению?

OAuthRequest request = new OAuthRequest(Verb.POST, 
     "http://api.flickr.com/services/upload/"); 
service.signRequest(accessToken, request); 
MultipartEntity entity = new MultipartEntity(); 
entity.addPart("photo", new FileBody(new File("/test/res/drawable-hdpi/icon.png"), 
     "image/png")); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
try { 
    entity.writeTo(out); 
    request.addPayload(out.toByteArray()); 
    request.addHeader(entity.getContentType().getName(), 
      entity.getContentType().getValue()); 

    Response response = request.send(); 
    String body = response.getBody(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

ответ

0

Доступ к файлам, находящимся в папке drawable, осуществляется по их абсолютной траектории.

Вместо этого попробуйте переместить изображение в папке /assets и доступ к нему с помощью getAssets() или переместить его в /res/raw и доступ к нему по R.raw.icon.

+0

R.raw.icon не работает –

+0

посмотреть [здесь] (http://stackoverflow.com/questions/4081763/access-resource-files-in-android) – niculare

0

Попробуйте открыть файл с openRawResource(int id):

Открыть поток данных для чтения исходного ресурса. Это можно использовать только с ресурсами, значение которых является именем файлов активов, то есть его можно использовать для открытия доступных ресурсов, звука и сырья; он будет терпеть неудачу в строковых и цветных ресурсах.

Я думаю FileBody конструкторы не принимать InputStream, так что вам, вероятно, нужны другие методы для отправки двоичных данных (файл).

Смежные вопросы