Скачивание файла в Delphi

Вы можете использовать это, потому что я отлично работал

//lets require/import the mongodb native drivers.
var mongodb = require('mongodb');

//We need to work with "MongoClient" interface in order to connect to a mongodb server.
var MongoClient = mongodb.MongoClient;

// Connection URL. This is where your mongodb server is running.
var url = 'mongodb://localhost/klevin';

// Use connect method to connect to the Server
MongoClient.connect(url, function (err, db) {

  if (err) {
    console.log('Unable to connect to the mongoDB server. Error:', err);
  } else {
    //HURRAY!! We are connected. :)
    console.log('Connection established to', url);


    // Get the documents collection
    var collection = db.collection('frames');

    //We have a cursor now with our find criteria
    var cursor = collection.find({
      tv: 'tematv', 
      date_created: {"$gte": new Date("2015-10-01T00:00:00.000Z") , "$lt": new Date("2017-03-13T16:17:36.470Z") }});

    //We need to sort by age descending
    cursor.sort({_id: -1});

    //Limit to max 10 records
    cursor.limit(50);

    //Skip specified records. 0 for skipping 0 records.
    cursor.skip(0);


    //Lets iterate on the result
    cursor.each(function (err, doc) {

      if (err) {

        console.log(err);

      } else {

        console.log('Fetched:', doc);

        if(doc !== null){ 

        }

      }
    });


  }

});
13
задан Andreas Rejbrand 18 August 2010 в 08:20
поделиться

2 ответа

Второй подход - это стандартный способ использования Интернет-ресурсов с помощью WinINet, части Windows API. Я использовал его много, и он всегда работал хорошо. Первый подход я никогда не пробовал. (Ни то, ни другое не является «очень сложным». При использовании Windows API всегда будет несколько дополнительных шагов.)

Если вам нужен очень простой метод, вы можете просто вызвать UrlMon.URLDownloadToFile . Вы не получите никакого точного контроля (вообще!) Над загрузкой, но это очень просто.

Пример:

URLDownloadToFile(nil,
                  'http://www.rejbrand.se',
                  PChar(ExtractFilePath(Application.ExeName) + 'download.htm'),
                  0,
                  nil);
16
ответ дан 1 December 2019 в 20:26
поделиться

Почему бы не использовать indy. Если вы используете TIdHTTP, это просто

procedure DownloadFile;    
var
  IdHTTP1: TIdHTTP;
  Stream: TMemoryStream;
  Url, FileName: String;
begin    
  Url := 'http://www.rejbrand.se';
  Filename := 'download.htm';

  IdHTTP1 := TIdHTTP.Create(Self);
  Stream := TMemoryStream.Create;
  try
    IdHTTP1.Get(Url, Stream);
    Stream.SaveToFile(FileName);
  finally
    Stream.Free;
    IdHTTP1.Free;
  end;
end;

. Вы даже можете добавить индикатор выполнения, используя события OnWork и OnWorkBegin

procedure IdHTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode;AWorkCountMax: Int64);
begin
  ProgressBar.Max := AWorkCountMax;
  ProgressBar.Position := 0;
end;

procedure IdHTTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
begin
  ProgressBar.Position := AWorkCount;
end;

. Я не уверен, срабатывают ли эти события в контексте основного потока, поэтому любые обновления, сделанные для VCL компоненты, возможно, придется делать с использованием компонента tidnotify для устранения проблем с потоками. Может, кто-нибудь еще сможет это проверить.

16
ответ дан 1 December 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: