Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/50: Рейтинг темы: голосов - 50, средняя оценка - 4.92
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578

Загрузка файлов с Яндекс.Диск

09.10.2012, 17:13. Показов 10757. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Можете подсказать как загрузить exe-файл или dll-файл с Яндекс.Диск? Задача: Загрузить указаные файлы в папку с программой и чтоб они оставались робочими? Можете подсказать как это сделать, плиз?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2012, 17:13
Ответы с готовыми решениями:

Получение списка и самих файлов из облака (любого, яндекс.диск, гугл драйв, дропокс)
Здравствуйте. Вот что хочу сделать: соединиться с облаком (любым), получить список файлов из папки и скачать выбранный файл (по имени). ...

Выгрузка на GDrive, Яндекс Диск и иже с ними
Здравствуйте! Волнует такой больше теоритич. вопрос.. Если я к примеру открыл общий доступ к некому текстовому файлику на GoogleDisk,...

Как с помощью IEDownload скачать файл с Яндекс.Диск
Привет. Скачал и установил компонент IEDownload. Теперь хочу спросить кое-что: Как с помощью этого компонента скачать файл с Яндекс.Диск?...

19
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
09.10.2012, 18:16
Насколько я помню на яндекс каптча стоит, поэтому не так то просто будет скачать, но вполне реализуемо (прийдется вводить код с картинки только)
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
09.10.2012, 18:51  [ТС]
Цитата Сообщение от sumrak95 Посмотреть сообщение
Насколько я помню на яндекс каптча стоит, поэтому не так то просто будет скачать, но вполне реализуемо (прийдется вводить код с картинки только)
я могу и разместить и на других файлообмениках, например RGHOST. И там нет этого. Но возможно ли скачать эти файлы от туда(с RGHOST)?
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
10.10.2012, 16:58
Цитата Сообщение от саша40 Посмотреть сообщение
я могу и разместить и на других файлообмениках, например RGHOST. И там нет этого. Но возможно ли скачать эти файлы от туда(с RGHOST)?
Элементарно
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
var
  Stream:TMemoryStream;
begin
    Stream:=TMemoryStream.Create;     
    IdHTTP1.Get('http://rghost.ru/download/40849984/23d6ba93f923aa14074b71b7437eb75b34276527/Project2.exe',Stream);
    Stream.SaveToFile('Имя файла.exe');
    Stream.Free;
end;
end.
1
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
10.10.2012, 18:16  [ТС]
зависает. Как исправить?
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
10.10.2012, 18:21
Цитата Сообщение от саша40 Посмотреть сообщение
зависает. Как исправить?
В потоке сделать)

А вообще какой файл скачиваешь по размеру? Если маленький то он быстро должен скачаться а если большой то только в поток
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
10.10.2012, 20:08  [ТС]
Вот подправил:
Delphi
1
2
3
4
5
6
7
8
9
try
    Stream:=TMemoryStream.Create;
    idHTTP1.Get('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe',Stream);
    Stream.SaveToFile(ExtractFilePath(Application.Exename) + 'Progect.exe');
finally
 Stream.Clear;
    Stream.Free;
    StatusBar1.SimpleText:='Файл скачался';
end;
Но всё равно программа зависает. Можно как нибудь исправить или показать прогресс загрузки?

Добавлено через 2 минуты
Слушай, а мне нужно будет скачать несколько файлов, можно ли как-нибудь зациклить(в основном скачка Dll)?

Добавлено через 38 секунд
Цитата Сообщение от sumrak95 Посмотреть сообщение
А вообще какой файл скачиваешь по размеру?
Примерно от 1000 кб и до 5 мб

Добавлено через 1 час 42 минуты
Я смог(сам) реализовать скачивание одного файла с помощью компонента IEDownload. Вот код:
Delphi
1
2
3
4
5
function TForm1.Download(FileURL: widestring): boolean;
begin
IEDownload1.Go(FileURL);
Result:=true;
end;
Delphi
1
Download('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe');
Вопрос: как устроить скачивание нескольких файлов(по очедери или одновремено)?
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
10.10.2012, 20:51
Цитата Сообщение от sumrak95 Посмотреть сообщение
Насколько я помню на яндекс каптча стоит
CAPTCHA стоит на Яндекс.Народ.Диск'е, а с просто Яндекс.Диском можно работать по WebDAV.
http://api.yandex.ru/disk/
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
10.10.2012, 22:02  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
CAPTCHA стоит на Яндекс.Народ.Диск'е, а с просто Яндекс.Диском можно работать по WebDAV.
http://api.yandex.ru/disk/
я уже от яндекс.диск. Лучше на старый добрый RGHOSt буду заливать и ссылки получать. Проблема тут с загрузкой: Качается по несколько раза, как сделать чтобы качалась 1?
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
10.10.2012, 22:16
Цитата Сообщение от саша40 Посмотреть сообщение
я уже от яндекс.диск. Лучше на старый добрый RGHOSt буду заливать и ссылки получать. Проблема тут с загрузкой: Качается по несколько раза, как сделать чтобы качалась 1?
Ну ты код то покажи мы и посмотрим
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
10.10.2012, 23:00  [ТС]
Цитата Сообщение от sumrak95 Посмотреть сообщение
Ну ты код то покажи мы и посмотрим
Вот кодик:
Delphi
1
2
3
4
5
function TForm1.Download(FileURL: widestring): boolean;
begin
IEDownload1.Go(FileURL);
Result:=true;
end;
Delphi
1
Download('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe');
Есть у компонента функция Download, но там два непонятных мне параметра:
Delphi
1
2
Download(const aUrl: WideString;
  pmk: IMoniker //вот этот; pbc: IBindCtx //и вот этот);
Что надо ставить(aUrl не надо, я разобрался с ней)?

Добавлено через 18 минут
Знал бы я что это за переменые закончил бы свою программу

Добавлено через 5 минут
IMoniker c этим ясно, это код html.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
12.10.2012, 10:22  [ТС]
Блин нечего не выходит.
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
12.10.2012, 16:14
Цитата Сообщение от саша40 Посмотреть сообщение
Блин нечего не выходит.
Покажи весь код, наверняка где то зацикливаешь действия, иначе бы он у тебя не качал несколько раз
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
12.10.2012, 20:51  [ТС]
Вот весь код:
Delphi
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WinSock, StdCtrls, Buttons, Tlhelp32, ComCtrls, iniFiles, IEDownload;
 
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Memo1: TMemo;
    Label3: TLabel;
    StatusBar1: TStatusBar;
    ProgressBar1: TProgressBar;
    IEDownload1: TIEDownload;
    Label4: TLabel;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax,
      ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar;
      Downloaded, ElapsedTime, Speed, RemainingTime, Status,
      Percent: String);
  private
    { Private declarations }
    function GetLocalIP: String;
    function TerminateProces(const FileName: String): boolean;
    function Download(FileURL: widestring): boolean;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  ip: string; //IP-переменая
  //переменые проверки версии
  f: TextFile;
  ver, verLocal: string;
  //массивы
  FileNameExe: string;
  FileNameDll: array [1..10] of String;
  //ссылочные переменые
  FileURlExe: string;
  FileUrlDll: array [1..10] of String;
implementation
 
{$R *.dfm}
 
{ TForm1 }
 
function TForm1.GetLocalIP: String;
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
ip:=GetLocalIP;
if ip='127.0.0.1' then
begin
Label1.Caption:='Нет доступа в Интернет';
BitBtn1.Enabled:=false;
end
else
begin
Label1.Caption:='Ваш IP: ' + ip;
BitBtn1.Enabled:=true;
end;
FileNameExe:='';
for i:=1 To 10 Do
FileNameDll[i]:='';
end;
 
function TForm1.TerminateProces(const FileName: String): boolean;
const
  PROCESS_TERMINATE=$0001;
var
  Co: BOOL;
  FS: THandle;
  FP: TProcessEntry32;
  M: TModuleEntry32;
  th: Cardinal;
  s: String;
  HSnapshot: THandle;
begin
  result := false;
  FS := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FP.dwSize := Sizeof(FP);
  Co := Process32First(FS, FP);
  while Co do
    begin
      s := FP.szExeFile;
      HSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, FP.th32ProcessID);
      If HSnapshot <> -1 then
        begin
          M.DwSize := SizeOf(TModuleEntry32);
          If Module32First(HSnapshot, M) Then
            s := M.SzExePath;
          CloseHandle(HSnapshot);
        end;
      if UpperCase(s) = UpperCase(FileName) then
        begin
          th := OpenProcess(PROCESS_TERMINATE, BOOL(0), FP.th32ProcessID);
          result := TerminateProcess(th, 0);
          inc(result);
        end;
      Co := Process32Next(FS,FP);
    end;
  CloseHandle(FS);
end;
 
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
TerminateProces(ExtractFilePath(Application.ExeName) + 'MusicPlayer.exe');
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if not FileExists(ExtractFilePath(Application.ExeName) + 'Version.ini') then exit;
AssignFile(f, ExtractFilePath(Application.ExeName) + 'Version.ini');
Reset(f);
read(f,Ver);
Label3.Caption:=Ver;
CloseFile(f);
BitBtn2.Enabled:=true;
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
var
Exe: string;
Dll: string;
i: integer;
begin
if FileExists(ExtractFilePath(Application.ExeName) + 'Обновления/Exe.ini') then
begin
AssignFile(f,ExtractFilePath(Application.ExeName) + 'Обновления/Exe.ini');
Reset(f);
Read(f,Exe);
FileNameExe:=Exe;
CloseFile(f);
end;
for i:=1 To 10 Do
begin
if FileExists(ExtractFilePath(Application.ExeName) + 'Обновления/Dll' + inttostr(i) + '.ini') then
begin
AssignFile(f,ExtractFilePath(Application.ExeName) + 'Обновления/Dll' + inttostr(i) + '.ini');
Reset(f);
Read(f,Dll);
FileNameDll[i]:=Dll;
CloseFile(f);
end;
Download('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe');
ShowMessage('Всё скачано проверяй');
end;
end;
 
procedure TForm1.IEDownload1Progress(Sender: TBSCB; ulProgress,
  ulProgressMax, ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar;
  Downloaded, ElapsedTime, Speed, RemainingTime, Status, Percent: String);
  var a, b, c: integer;
  d: string;
begin
ProgressBar1.Max:=ulProgressMax;
ProgressBar1.Position:=ulProgress;
StatusBar1.SimpleText:=Status;
a:=FileSize;
b:=strtoint('1024');
c:=a / b;
d:=inttostr(c);
Label5.Caption:='Размер: ' + inttostr(d) + 'кб';
Label4.Caption:='Скорость: ' + Speed;
end;
 
function TForm1.Download(FileURL: widestring): boolean;
begin
IEDownload1.Go(FileURL);
Result:=true;
 
end;
 
end.
Добавлено через 53 секунды
у меня ещё размер не делится. Как исправить?
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
12.10.2012, 22:09
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
for i:=1 To 10 Do
begin
if FileExists(ExtractFilePath(Application.ExeName) + 'Обновления/Dll' + inttostr(i) + '.ini') then
begin
AssignFile(f,ExtractFilePath(Application.ExeName) + 'Обновления/Dll' + inttostr(i) + '.ini');
Reset(f);
Read(f,Dll);
FileNameDll[i]:=Dll;
CloseFile(f);
end;
Download('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe');
ShowMessage('Всё скачано проверяй');
end;
Видишь цикл for от 1 до 10 и видишь где он заканчивается? В этом вся и проблема была, качался твой файл 10 раз, для решения этой проблема переставь end вот так
Delphi
1
2
3
4
end;
end;
Download('http://tau.rghost.ru/download/40851608/0c060044ee5fbec878d09f179febecf73e3a9251/Project1.exe');
ShowMessage('Всё скачано проверяй');
1
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
13.10.2012, 13:26  [ТС]
Цитата Сообщение от sumrak95 Посмотреть сообщение
Видишь цикл for от 1 до 10 и видишь где он заканчивается? В этом вся и проблема была, качался твой файл 10 раз, для решения этой проблема переставь end вот так
минуту. Значит я не там кончил цыкл.
А я тупил почему не скачивается один раз. щас попробую.

Добавлено через 3 минуты
Всё закачка готова. Ура!!!!
Столько потел над ней.

А вот как быть с размером файла?

Добавлено через 3 минуты
Код размера вот:
Delphi
1
2
3
4
5
a:=FileSize;
b:=1024;
c:=a/b; //тут ошибку говорит
d:=inttostr(c);
Label5.Caption:='Размер: ' + d + кб';
Ошибка такая:
Incompatible types: 'Integer' and 'Extended' Говорится о несовместимости тапа Integer и Extended, как это исправить если обе переменые типа Integer?

Добавлено через 15 секунд
Всё по тойже теме.
0
Избранный
 Аватар для sumrak95
83 / 83 / 42
Регистрация: 08.06.2012
Сообщений: 174
13.10.2012, 13:56
Цитата Сообщение от саша40 Посмотреть сообщение
Incompatible types: 'Integer' and 'Extended' Говорится о несовместимости тапа Integer и Extended, как это исправить если обе переменые типа Integer?
Переменная c должна быть типа real

Добавлено через 5 минут
Как то так
Delphi
1
2
3
4
5
6
7
8
9
10
11
var
a,b:Integer;
c:Real;
d:string;
begin
a:=FileSize;
b:=1024;
c:=a/b;
d:=FloatToStr(c);
Label5.Caption:='Размер: ' + d + 'кб';
end;
1
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
13.10.2012, 14:27  [ТС]
спасибо
0
32 / 53 / 9
Регистрация: 05.12.2013
Сообщений: 261
11.12.2013, 09:22
Цитата Сообщение от саша40 Посмотреть сообщение
зависает. Как исправить?
Установи на форму компонент IdAntiFreeze
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
11.12.2013, 10:13
Цитата Сообщение от Maxim******* Посмотреть сообщение
Установи на форму компонент IdAntiFreeze

Не по теме:

Лучше поздно, чем через год...:D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2013, 10:13
Помогаю со студенческими работами здесь

Загрузка DLL из интернета, минуя жесткий диск
Собственно сабж... требуется код(либо куды копать), как реализовать подгрузку библиотеки из интернета(при этом сохраняя ее не на жестком...

Загрузка файлов
Добрый день! Как загрузить файл из Интернета с возможностью дозакачки. Желательно для CodeGear Delphi 2007.

Загрузка файлов HTTP
Возникла трудность со скачиванием изображений. Вот мой код: procedure TForm1.btn1Click(Sender: TObject); var str...

Многопоточная загрузка файлов
Добрый день. Недавно я создавал похожую тему, но проблема тогда была в другом. Дело в том что я пишу, что-то вроде менеджера загрузок. У...

Массовая загрузка файлов
Нельзя ли как загрузить сразу 2 файла одним кодом? var http: TIdHTTP; Stream: TMemoryStream; jpeg : TJPEGImage; begin ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru