Jump to content
php.lv forumi
  • 0

downloading state


andre

Question

ja nodod browserim lejupielādēt failu caur php failu ar headeriem (browseris pieņem to automātiski), kā var sekot lejupielādes procesam vai vismaz pārlādēt lapu pēc sekmīgas lejupielādes ? flash neder. refreshot ik pēc X laika arī neder, jo var būt lēns ātrums un lejupielādes fails liels.

 

doma ir ar php automatizēt faila lejupielādi no servera uz klienta datora. klients atstāj web lapu, kas refreshojās ik pēc laika un php skripts gaida faila nosaukuma listi. tikko listē ir fails tā tas uzreiz tiek lejupielādēts. kad lejupielāde beidzas atkal tiek čekota liste. lūk vienīgā problēma ir piefiksēt lejupielādes beigas. please help

Edited by andre
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

briedi, vai tev patiktu, ka atverot kādu lapu tajā būtu flash, kas kko sāk seivot uz tava datora? :P

 

Ja es zinātu, ka tam tā jābūt, tad jā. :D

Man liekas, ka te tiek veiktas specifiskas lietas, specifiskiem apmeklētājiem...

Link to comment
Share on other sites

  • 0

saprotu ka php tur ir tikai nodot failu browserim, tapee teemu izveleejos JavaScript, jo ar php klientu datoraa nav iespeejams neko chekot, bet to lieliski var JavaScripts. Bet vai shaads uzdevums javascriptam ir pa zobam ?

Edited by andre
Link to comment
Share on other sites

  • 0

pašam js nē, bet ja js izveido, piemēram, kkādu ActiveX objektu, tad jau gan js kļūst ļoti powerful. nē, nu viens pats js to tiešām nevar by design. tur kkas klienta galā ir jāsakodē: flash/java/activex/hvz. varbūt vsp desktop applikāciju uzreiz taisīt, kas vnk pieslēdzas lapai un nokačā to, ko vajag?

Edited by 2easy
Link to comment
Share on other sites

  • 0

Ja jau tā varētu vienkārši ņemt un kopēt failus uz lietotāja datora, tas jau būt norm drošības caurums :) Tāpēc jau kaut kādi java appleti prasa atļauju, vai vispār drīkst startēties. Un tiklīdz spied I trust this shit, tā paraksties uz visiem riskiem...

Link to comment
Share on other sites

  • 0

Parakos, pameklēju, patestēju. Atradu risinājumu, kā noteikt faila lejupielādes beigas:

 

<?php
$file = 'file.exe';
$start = time();

if (file_exists($file)) {
   header('Content-Description: File Transfer');
   header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename='.basename($file));
   header('Content-Transfer-Encoding: binary');
   header('Expires: 0');
   header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   header('Pragma: public');
   header('Content-Length: ' . filesize($file));

   $status = readfile($file);

$delta = time() - $start;

if($status){
	file_put_contents("status.txt","Done! Took $delta seconds.");
}
}
?>

 

Tad kad beidzās readfile izpilde, tad arī fails ir beidzis lādēties.

Kā manā piemērā - kad beidzas ielāde, ierakstu kaut kādā failiņā datus, ka ielāde beigusies.

Tad ar ajax no lietotājam atvērtas lapas var pārbaudīt, vai lejuplāde ir beigusies, un attiecīgi rīkoties...

Link to comment
Share on other sites

  • 0

nu jā bet ar vienu pašu js tālāk par nākamo browsera "save as" dialogu netiksi... anyway būs jāgaida, kad useris uzspiedīs "ok"

 

Tas gan ir fakts. Bet principā tas ir tikai normāli, ka jebkura web lapa pati par sevi nevar sākt kopēt kaut kādus failus uz mana kompja :D

Link to comment
Share on other sites

  • 0

Parakos, pameklēju, patestēju. Atradu risinājumu, kā noteikt faila lejupielādes beigas:

 

<?php
$file = 'file.exe';
$start = time();

if (file_exists($file)) {
   header('Content-Description: File Transfer');
   header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename='.basename($file));
   header('Content-Transfer-Encoding: binary');
   header('Expires: 0');
   header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
   header('Pragma: public');
   header('Content-Length: ' . filesize($file));

   $status = readfile($file);

$delta = time() - $start;

if($status){
	file_put_contents("status.txt","Done! Took $delta seconds.");
}
}
?>

 

Tad kad beidzās readfile izpilde, tad arī fails ir beidzis lādēties.

Kā manā piemērā - kad beidzas ielāde, ierakstu kaut kādā failiņā datus, ka ielāde beigusies.

Tad ar ajax no lietotājam atvērtas lapas var pārbaudīt, vai lejuplāde ir beigusies, un attiecīgi rīkoties...

 

man kaut kaa moka shaubas par sho skriptu. cik zinu tad php ielasa failu loti aatri un izdod kaut kaadam output bufferim datus. man peec shaada skripta izpildes taa laiks uzraadaas 0.016... sekundes, kaut arii lejupielaadeejas 7 sekundes testa fails :( varbuut kaut ko nedaru taa kaa vajag.

Edited by andre
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...