Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
1

Загрузка файла по URL

21.03.2016, 13:26. Просмотров 3992. Ответов 12
Метки нет (Все метки)

Добрый день.

Уже несколько дней бьюсь над одной проблемой - как реализовать скачивание файла по URL. Я написал парсер определенного ресурса. В полученной информации, кроме всего прочего, мне приходит адрес/ссылка перейдя по которой в браузере начинается скачивание файла. Вопрос вот в чем - как мне реализовать скачивание файла по ссылке в приложении Android. При чем файл должен сохраняться во внутреннюю память смартфона, например в папку Downlod.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2016, 13:26
Ответы с готовыми решениями:

Загрузка готового приложения на Google Play. Требует URL в файл манифеста
Немного подправил свою игрушку, пытаюсь обновить версию на гугл плей. После загрузки нового apk на...

Загрузка файла через URL и сохранение его в IsolatedStorage
Совственно задача простая. Есть прямая ссылка на файл. Этот файл нужно загрузить в IsolatedStorage....

Загрузка файла на FTP по URL (ссылки) с разных сайтов
Нужен скрипт на PHP для загрузки файлов на FTP по URL (ссылки). Т.е. чтобы можно было вставить в...

Узнать полный URL. Дата изменения файла по URL
Доброго времени суток, уважаемые форумчане. Долгих лет и славных лет вам, уважаемый UI... Работаю...

Загрузка по URL
есть код: <?PHP if (!empty($_GET)) { function filesize_GET($file1) { ...

12
Pablito
2831 / 2249 / 760
Регистрация: 12.05.2014
Сообщений: 7,852
Завершенные тесты: 1
21.03.2016, 15:21 2
да можно кучей способов сделать, хоть и так (без особого рефакторинга и уже набившего оскомину асинктаска)
1. в манифесте прописать разрешение
XML
1
    <uses-permission android:name="android.permission.INTERNET" />
2. добавляем библиотеку, например Apache IO, для этого в файле build.gradle в зависимостях добавляем
XML
1
compile 'commons-io:commons-io:2.4'
3. где-то в активити помещаем такой код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    private void onDownloadComplete(boolean success) {
        // файл скачался, можно как-то реагировать
        Log.i("***", "************** " + success);
    }
 
    private class LoadFile extends Thread {
        private final String src;
        private final File dest;
 
        LoadFile(String src, File dest) {
            this.src = src;
            this.dest = dest;
        }
 
        @Override
        public void run() {
            try {
                FileUtils.copyURLToFile(new URL(src), dest);
                onDownloadComplete(true);
            } catch (IOException e) {
                e.printStackTrace();
                onDownloadComplete(false);
            }
        }
    }
4.когда надо что-то качнуть, пишем
Java
1
new LoadFile(src, dest).start();
Пример рабочий, но упрощенный, без использования тредпулов и прочего. Для начала сгодится.
0
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
21.03.2016, 16:49  [ТС] 3
Правильно ли я понимаю Ваш код - src это будет мой URL?
И я не понял куда будет скачиваться мой файл.
0
Pablito
2831 / 2249 / 760
Регистрация: 12.05.2014
Сообщений: 7,852
Завершенные тесты: 1
21.03.2016, 17:20 4
а блин, че-то не все скопировал,
там примерно так будет
Java
1
2
3
4
String destFileName = "img.jpg";
        String src = "https://img-fotki.yandex.ru/get/0/y230693.0/0_185_f52b55e3_M.jpg";
        File dest = new File(Environment.getExternalStorageDirectory() + "/Download/" + destFileName);
        new LoadFile(src, dest).start();
0
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
22.03.2016, 16:25  [ТС] 5
Паблито, Спасибо, еще не попробовал.
А можешь пример с АсинхТаском дать? Буду очень признателен ))
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
23.03.2016, 01:12 6
Gared,

1. Интерфейс для результата:

Java
1
2
3
4
5
6
7
8
9
10
11
public interface FileLoadingListener {
 
    void onBegin();
 
    void onSuccess();
 
    void onFailure(Throwable cause);
 
    void onEnd();
 
}

2. Таска

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class FileLoadingTask extends AsyncTask<Void, Void, Void> {
 
    private String url;
    private File destination;
    private FileLoadingListener fileLoadingListener;
    private Throwable throwable;
 
    public FileLoadingTask(String url, File destination, FileLoadingListener fileLoadingListener) {
        this.url = url;
        this.destination = destination;
        this.fileLoadingListener = fileLoadingListener;
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        fileLoadingListener.onBegin();
    }
 
    @Override
    protected Void doInBackground(Void... params) {
        try {
            FileUtils.copyURLToFile(new URL(url), destination);
        } catch (IOException e) {
            throwable = e;
        }
        return null;
    }
 
    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        fileLoadingListener.onEnd();
        if (throwable != null) {
            fileLoadingListener.onFailure(throwable);
        } else {
            fileLoadingListener.onSuccess();
        }
    }
}
3. Запуск

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
new FileLoadingTask(
                "https://....jpg",
                new File(Environment.getExternalStorageDirectory() + "/Download/img.jpg"),
                new FileLoadingListener() {
                    @Override
                    public void onBegin() {
 
                    }
 
                    @Override
                    public void onSuccess() {
 
                    }
 
                    @Override
                    public void onFailure(Throwable cause) {
 
                    }
 
                    @Override
                    public void onEnd() {
 
                    }
                }).execute();
0
Alexvp
111 / 75 / 8
Регистрация: 03.08.2014
Сообщений: 402
23.03.2016, 08:22 7
Если закачиваете картинки, то используйте библиотеку Пикассо
0
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
23.03.2016, 08:46  [ТС] 8
YuraAAA,

Большое спасибо. В ближайшее время попробую. ))

Alexvp,

Нет, я торрент файл скачивать буду.
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
23.03.2016, 10:12 9
Цитата Сообщение от Gared Посмотреть сообщение
Нет, я торрент файл скачивать буду.
А что, торрент-файл работает по тому же протоколу HTTP?
0
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
23.03.2016, 11:46  [ТС] 10
CoolMind,
Я собираюсь скачивать не то на что ссылается торрент файл (фильмы, музыка и т.п.), а сам торрент файл (file.torrent)
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
23.03.2016, 12:23 11
Gared, (тоже так и подумал...)
0
Gared
0 / 0 / 0
Регистрация: 21.03.2016
Сообщений: 8
23.03.2016, 12:25  [ТС] 12
CoolMind,
Тогда я не понял вопроса про протокол HTTP
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,734
23.03.2016, 12:35 13
Gared, просто у меня было 2 варианта: или HTTP (с торрент-файлом), или P2P (с контентом). Заинтересовало, рассчитывали ли вы на второй или на первый. На всякий случай, спросил, чтобы случайно не было разочарований.
0
23.03.2016, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 12:35

Загрузка картинки по URL
Вопрос вот в чём: задаю список url-картинок и скачиваю их в отдельную папку. Те, которые...

Загрузка URL из вне
Здравствуйте, извиняюсь если копирую тему, проблема такая. Есть прога - браузер, сделанная с...

Загрузка изображения с URL
Добрый день. Мне нужно загрузить картинку с url адреса на компьютер (или есть другие способы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru